我正在處理我的第一個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