我正在开发我的第一个C#/ WPF项目(我是具有一些Flex / As经验的Java / Web开发人员)。 MVVM模式似乎是要走的路,所以我开始攀登学习曲线......
我想知道在相关的ViewModel对象之间通知状态修改的方法是什么。
长话短说,我有一个UserControl,其中包含一个绑定到MyTreeViewModel公开的ReadOnlyCollection的TreeView。
SomethingViewModel实现了INotifyPropertyChanged,并在其“IsSelected”属性发生更改时生成事件。
MyTreeViewModel有一个事件处理程序附加到SomethingViewModel的PropertyChanged事件,并更新它管理的名为'CurrentlySelectedElement'的属性。
MyTreeViewModel还实现了INotifyPropertyChanged,并在其“CurrentlySelectedElement”属性发生变化时生成事件。
最后,我在另一个处理选择更改的ViewModel类中有一个事件处理程序。
这是在C#/ WPF中接近这个的正确方法吗?
另外,我真的不喜欢在我的事件处理方法中使用Strings的属性名称;它对我来说似乎没有很好的重构。现在,我已经通过将属性名称暴露为静态字符串来解决这个问题,因此我可以在事件处理程序方法中使用以下代码:
if(SomeViewModel.PROPERTY_IS_SELECTED.Equals(e.PropertyName)) { ... }
你知道一个更好的选择吗?我想应该有办法做到这一点,但说实话,我还没有进一步调查。
感谢您的反馈!
答案 0 :(得分:1)
查看Event Aggregator模式。那里有很多实现。如果您正在使用MVVM框架(https://stackoverflow.com/questions/1280462/what-mvvm-framework-are-you-using,What framework for MVVM should I use?),那么它也可能包含一个实现。