假设有一个带有依赖项属性的UserControl(某个对象的集合) - 无论如何,当设置依赖项属性时,是否有自动执行视图模型公开的命令而不破坏封装并执行此操作“ MVVM方式“?
是的,我知道我总是可以连接属性更改静态处理程序,将对象强制转换为我的用户控件的实例,获取数据上下文,将其转换为视图模型并手动调用命令
编辑:也许一个例子会有所帮助。我的UserControl有一个“ItemsSource”依赖属性..我希望它可以设置为ObjectA的集合。我有一个“Items”依赖项属性,它只是gettable,是ObjectB的集合。我想要这样的行为,如果我设置了ItemSource,我的ObjectAs集合将被视图模型一对一地转换为ObjectBs,而Items依赖项属性将自动反映这一点。
为此,我想要一个只写的ItemsSource和一个只读的Items属性。
答案 0 :(得分:1)
只是说清楚:
如果这是你想要的,那将是一个解决方案:
ItemsSource 是可读的。据我所知,只写只读DP是不可能的:
SO Thread about write-only DPs
但是,这种方法无论如何都应该有用。
希望这会有所帮助,欢呼......
答案 1 :(得分:0)
如果您使用ObservableCollection
,则可以使用CollectionChanged
事件。
视图模型:
private ObservableCollection<object> _Objects
public ObservableCollection<object> Objects
{
get { return _Objects; }
set { _Objects = value;
OnPropertyChanged(new PropertyChangedEventArgs("Objects"));
}
}
Objects.CollectionChanged+= new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Objects_CollectionChanged);
void Objects_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
}