- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我仍然不完全确定什么构成了 View 模型。我有一个类用于包装我的模型并稍微更改数据,但我不确定它是否构成 View 模型。什么是必要的 View 模型?它是否只是不应该直接依赖于 View ,以便 View 模型不知道 View 如何使用其属性并且 View 不知道 View 模型中的内容?当 View 想要更新任何东西时,它只是给出了一些抽象命令, View 模型采用并用于更新模型?
正如我在 MVVM 中所理解的那样,我应该在 View 上使用绑定(bind)到 View 模型上的属性的属性,这些属性绑定(bind)到模型上的属性。
而在相反的方向,我应该使用从 View 到 View 模型的命令,然后它可以使用 Icommand 来命令模型,或者可以只调用模型中的公共(public)函数来对其进行更改。
一件令人困惑的事情是,在我看到的 MVVM 示例中,看起来就像在 MVVM 中一样,除了可能创建命令之外, View 应该没有任何代码,但我不知道如何在我当前的项目中做到这一点。我正在使用许多与事件交互的控件来制作自定义控件。
我如何在不使用事件的情况下让一个 TreeView 在另一个 TreeView 的展开上展开?
最佳答案
通常, View 模型最终与您的领域模型非常相似。拥有 View 模型的主要目标之一是将 GUI 开发与业务逻辑分开。例如,假设您有一个“用户”域模型,该模型具有您不希望向 View 公开的 IsAdmin 属性。您创建了一个名为“UserViewModel”的 View 模型,它仍然具有 ID、用户名和密码(参见下面的示例代码),但没有 IsAdmin 属性。另一种方法是在 View 模型中使用域模型,请参阅下面的“AlternateUserViewModel”类。任何 View Model 解决方案都有利有弊。创建具有属性的 UserViewModel 类意味着您实际上是在复制为域模型创建的对象,因为通常您的域模型与您的 View 模型非常相似。使用 AlternateUserViewModel 方法,业务逻辑层和 GUI 层之间没有明确的分离,因为 View 模型仍然需要“了解”域模型。您决定采用哪种方法实际上取决于您工作的环境。对于个人项目,我喜欢使用第二种方法,因为将业务逻辑与设计层分离并不是我不想让的主要问题 View 模型层“看到”领域模型层,但对于在设计层和后端有独立团队工作的大公司,第一种方法可能是首选。
public class User
{
public int ID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public bool IsAdmin { get; set; }
}
public class UserViewModel
{
public int ID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
public class AlternateUserViewModel
{
public User User { get; set; }
public User ToDomainModel()
{
if (User == null)
return null;
// if this is an existing user, retrieve it from the database so you're not overwriting the IsAdmin property
if (User.ID != default(int))
{
User existingUser = UserService.GetUserByID(User.ID);
existingUser.Username = User.Username;
existingUser.Password = User.Password;
// IsAdmin is not set because you don't want that property exposed in the View Model
return existingUser;
}
else
{
return new User
{
Username = User.Username,
Password = User.Password,
IsAdmin = false
};
}
}
}
关于wpf - 什么构成 View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668497/
您好,我正在使用 AWS EKS 开发 kubernetes。当我将 docker-compose 文件转换为 kompose 文件时,我遇到了 kompose 文件的问题,我遇到了卷挂载点问题,而且
在将密码转换为二进制哈希值以存储在数据库中时,我注意到除了通常的乱码之外,还有一些引号、空格和字母表,这些巧合可能构成有效 SQL 语句的一部分。 出于好奇,我想知道是否有人遇到过任何字符串在哈希后神
我的组件具有动态部分和 compose。动态部分在其他模块中,即节点项目。 如果我想在页面中使用自定义元素,例如: 我收到一条错误消息,指出无法在 ./my-custom-element/someV
我有一个 pandas 数据框,其中一列由数组组成。所以每个单元格都是一个数组。 假设数据框 df 中有一个列 A,这样 A = [ [1, 2, 3], [4, 5, 6],
当 HTTP 请求和响应在互联网上传输时,请求中文本的格式是什么?是 ASCII 码吗? 例子:如果 HTTP 请求如下所示 - GET /mysite/ HTTP/1.1 -- rest of t
我是一名优秀的程序员,十分优秀!