您好我最近调查了WPF并开始学习事件和命令.我通常使用按钮点击命令,这导致方法在我的"视图模型"中运行.
是否可以通过使用提交使Button对任何其他事件(如MouseOver事件)做出反应?或者在这种情况下会使用WPF事件?
如果要使用WPF事件,那么事件处理程序实现是否应该在视图模型中调用方法以保持关注点?
我最近开始学习wpf并尝试使用mvvm.
我的理解是,在mvvm中,视图或模型都不应该知道另一个存在.
我要做的是在屏幕上显示客户列表.但是如果我对viewModel进行编码,如下所示.这与我在网上看到的许多例子类似,然后我最终得到了一些看起来像这样的代码
class Customer
{
public String Name {get;set;}
public String Address {get;set;} }
}
class MainWindowViewModel
{
ObservableCollection<Customer> customers = new ObservableCollection<Customer>();
public ObservableCollection<Customer> Customer
{
get {return customers;}
}
public MainWindowViewModel()
{
//cust1 and cust2 are Customer objets
customers.Add(cust1);
customers.Add(cust2);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我创建一个MainWindowViewModel的实例并将其设置为我的MainWindowView(我的视图)的datacontext,并且我进一步将viewmodels Customers属性绑定到listBox,那么视图将需要对包含我的Models的程序集的引用.
所以我的问题是.
1)在MVVM中添加对允许的模型程序集的引用,因为这意味着视图知道模型.
2)更好的解决方案是将每个Customer对象包装在CustomerViewModel中,并让MainWindowViewModel包含CustomerViewModel 的ObservableCollection而不是Customer的ObservableCollection.这会将模型与视图完全分开.