我正在处理我的第一个C#/ WPF项目(我是一位具有Flex/As体验的Java/Web开发人员)。 MVVM模式似乎是要走的路,所以我已经开始攀登学习曲线...在使用MVVM模式时通知状态修改的最佳方式
我想知道什么被视为通知相关的ViewModel对象之间状态修改的方式。
长话短说,我有一个UserControl,它包含一个绑定到由MyTreeViewModel公开的ReadOnlyCollection的TreeView。
SomethingViewModel实现INotifyPropertyChanged,并在其IsSelected属性更改时生成一个事件。
MyTreeViewModel有一个附加到SomethingViewModel的PropertyChanged事件的事件处理程序,并更新它管理的一个名为'CurrentlySelectedElement'的属性。
MyTreeViewModel还实现INotifyPropertyChanged并在其“CurrentlySelectedElement”属性更改时生成一个事件。
最后,我在处理选择更改的另一个ViewModel类中有一个事件处理程序。
这是在C#/ WPF中处理此问题的正确方法吗?
另外,我并不喜欢在事件处理方法中使用属性名和字符串;这对我来说似乎不是很重构。现在,我已经通过将属性名称暴露为静态字符串来处理这个问题,以便我可以简单地在我的事件处理程序方法中使用以下内容:
if(SomeViewModel.PROPERTY_IS_SELECTED.Equals(e.PropertyName)) { ... }
你知道更好的选择吗?我想应该有办法做到这一点,但说实话我没有进一步调查。
感谢您的反馈!
感谢您的回答。我会看看Event Aggregator,它看起来很不错,并且会给我更多的灵活性。我从MVVM Foundation框架(即ObservableObject和PropertyObserver)中抽取了一些类来解决我关于重构友好性的第二个问题。 – dSebastien 2010-12-09 10:37:15