小编CAA*_*CAA的帖子

何时在WPF中使用事件而不是命令?

您好我最近调查了WPF并开始学习事件和命令.我通常使用按钮点击命令,这导致方法在我的"视图模型"中运行.

是否可以通过使用提交使Button对任何其他事件(如MouseOver事件)做出反应?或者在这种情况下会使用WPF事件?

如果要使用WPF事件,那么事件处理程序实现是否应该在视图模型中调用方法以保持关注点?

wpf routed-commands mvvm mvvm-light eventtocommand

30
推荐指数
2
解决办法
6318
查看次数

集合的MVVM

我最近开始学习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包含CustomerViewModelObservableCollection而不是CustomerObservableCollection.这会将模型与视图完全分开.

wpf mvvm

5
推荐指数
1
解决办法
1196
查看次数

标签 统计

mvvm ×2

wpf ×2

eventtocommand ×1

mvvm-light ×1

routed-commands ×1