我是MVVM和WPF的新手。所以我很容易。
我在MVVM中有一个模型(模型A),在ViewModel中我有一个集合。 该集合存在于View of ListView中。 我有另一个模型(模型B - 不是ui模型),每次listview改变时都需要做一些事情。
如何在选择更改时提醒模型B?什么是正确方式?
答案 0 :(得分:1)
使用发布/订阅者模式
喜欢在EventAggregator中使用 http://msdn.microsoft.com/en-us/library/ff647984.aspx
或在Messenger中 。http://geekswithblogs.net/lbugnion/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx usualy MVVM框架为此构建提供了机制。
我个人会将命令从VM发送到VM并让他们更新Model
希望这会有所帮助
答案 1 :(得分:1)
我要么
我更喜欢选项1,因为它使您更加明显地想要做什么。此外,它更有效(你没有过滤代码的气味,哪些属性发生了变化,然后做了一些动作。)
恕我直言,我认为中继命令只能用作视图和视图模型之间的接口,以帮助分离关注点。但是当你从一个类编程到一个类时,只需使用标准的OOP约定。
所以伪代码可能看起来像这样:
public class ViewModelA
{
public event EventHandler SelectedObjectChanged;
public IList<MyObject> ObjectList {get;set;}
public MyObject _SelectedObject;
public MyObject SelectedObject
{
get { return _SelectedObject;}
set
{
_SelectedObject = value;
if (SelectedObjectChanged != null)
SelectedObjectChanged(value);
}
}
}