C# 在MVVM中,如果UI不';不需要更新吗?
我正在用WPF编写一个自动化应用程序,它有一个页面,要求用户输入用户名、密码、服务器名、数据库用户名和数据库密码。我正在尝试使用MVVM编写应用程序,并且一直在关注视频和在线资源,但是大多数来源都简单地说,如果使用数据绑定,那么模型应该为属性更改属性事件,而他们就不这样做了。我的问题是,我认为属性更改事件是更新应用程序中UI的一种方式,但在输入用户名或密码时,我不需要更新UI。我只需要将输入的用户名存储在属性中,以便以后使用。因此,即使不需要更新UI,我想知道是否需要引发属性更改事件C# 在MVVM中,如果UI不';不需要更新吗?,c#,wpf,mvvm,data-binding,C#,Wpf,Mvvm,Data Binding,我正在用WPF编写一个自动化应用程序,它有一个页面,要求用户输入用户名、密码、服务器名、数据库用户名和数据库密码。我正在尝试使用MVVM编写应用程序,并且一直在关注视频和在线资源,但是大多数来源都简单地说,如果使用数据绑定,那么模型应该为属性更改属性事件,而他们就不这样做了。我的问题是,我认为属性更改事件是更新应用程序中UI的一种方式,但在输入用户名或密码时,我不需要更新UI。我只需要将输入的用户名存储在属性中,以便以后使用。因此,即使不需要更新UI,我想知道是否需要引发属性更改事件 publi
public class Model
{
private string username;
private string serverName;
private string password;
//this is where my question is
public string Username
{
get
{
return username;
}
set
{
if(username != value)
{
username = value;
//if the username doesn't need to be updated in the UI
//does the property changed event need to be raised or
//used?
RaisePropertyChanged(Username);
}
}
}
}
不,根据微软的文档,它只是一个变更通知,所以,如果你不需要它,它是不必要的。但我建议您不要直接在模型上使用de Property Change,将属性复制到ViewModel,然后在那里使用。尽可能保持您的模型最干净。我认为,如果您不需要更改属性,您的绑定可以是一种方式,这对性能更好
不,根据Microsoft文档,它只是用于更改通知,因此,如果您不需要它,它是不必要的。但我建议您不要直接在模型上使用de Property Change,将属性复制到ViewModel,然后在那里使用。尽可能保持您的模型最干净。我认为,如果您不需要更改属性,您的绑定可以是一种方式,这对性能更好
否。这应该是一个viewmodel,而不是一个模型,并且所有viewmodel都应该实现inotifypropertychanged(除非它们是依赖项对象,但这很少是一个好的计划)。只有需要通知更改的属性才需要这样做。将值从模型实例复制到vm并将视图绑定到vm是非常常见的。然后将vm返回到模型以进行更新。@helplessprogrammer如果永远不需要发出任何更改通知,则不应该发出任何更改通知。这并不是模型/视图模型的全部区别:例如,我几乎可以说任何带有命令的东西都是视图模型。但如果它只是一个带有属性的裸类,没有通知,可能还有一两个构造函数,那听起来确实像是一个模型。在一个类中,尽可能多的数据访问细节是专门用于此目的的,从广义上讲,这将是“模型”的一部分。因此,“模型”包括表示实体的模型类,以及用于从数据存储中检索这些实体类的类。在viewmodel领域中,UserListViewModel将转到用户列表的数据访问类,并为每个用户模型对象创建UserViewModel……也就是说,假设需要UserViewModel。我想不出比这更合适的例子了。可能一个InsurancePolicyViewModel会转到数据层来检索其准备金、索赔和付款及其客户的模型,并为所有这些实体创建相应的ViewModel。否。这应该是一个viewmodel,而不是一个模型,并且所有viewmodel都应该实现inotifypropertychanged(除非它们是依赖项对象,但这很少是一个好的计划)。只有需要通知更改的属性才需要这样做。将值从模型实例复制到vm并将视图绑定到vm是非常常见的。然后将vm返回到模型以进行更新。@helplessprogrammer如果永远不需要发出任何更改通知,则不应该发出任何更改通知。这并不是模型/视图模型的全部区别:例如,我几乎可以说任何带有命令的东西都是视图模型。但如果它只是一个带有属性的裸类,没有通知,可能还有一两个构造函数,那听起来确实像是一个模型。在一个类中,尽可能多的数据访问细节是专门用于此目的的,从广义上讲,这将是“模型”的一部分。因此,“模型”包括表示实体的模型类,以及用于从数据存储中检索这些实体类的类。在viewmodel领域中,UserListViewModel将转到用户列表的数据访问类,并为每个用户模型对象创建UserViewModel……也就是说,假设需要UserViewModel。我想不出比这更合适的例子了。也许一个InsurancePolicyViewModel会转到数据层来检索其准备金、索赔和付款及其客户的模型,并为所有这些实体创建相应的ViewModel。