由於這是這麼久,脫垂,真正犯規問一個連貫的問題:MVVM - prismv2 - INotifyPropertyChanged的
1:什麼是實現在視圖模型主要目的的子屬性的正確方法?
2:有沒有人找到一種方法來解決這個問題delegatecommand.RaiseCanExecuteChanged?還是我需要自己修復它直到MS呢?
對於故事的其餘部分...繼續。
在我的viewmodel我有一個醫生對象屬性綁定到我的Model.Doctor,這是一個EF POCO對象。我在二傳手onPropertyChanged(「醫生」)這樣:
唯一一次OnPropertyChanged火災,如果整個對象的變化。這不是一個問題,除了我需要知道醫生的屬性何時更改,以便我可以在我的表單上啓用其他控件(例如保存按鈕)。我試圖實現它以這樣的方式
Public Property FirstName() As String
Get
Return _objDoctor.FirstName
End Get
Set(ByVal Value As String)
_objDoctor.FirstName = Value
OnPropertyChanged("Doctor")
End Set
End Property
這是從卡爾Shifflet的XAMLPowerToys控制拍攝,所以我必須假設它是正確的。但是,對於我的生活,我不能讓它工作。
,因爲我使用的是統一的容器來實例化我認爲我已經包含在這裏PRISM,它是一個單例。我通過eventaggregator向viewmodel發送更改通知,然後使用新值填充Doctor。我這樣做的原因是因爲PRISM的DelegateCommand。所以也許這是我真正的問題。
看來,存在DelegateCommand一個錯誤,不會觸發實現它,因此需要手動解僱命令RaiseCanExecuteChanged方法。我有我的onPropertyChangedEventHandler的代碼。當然,這心不是通過ICommand接口要麼,所以我必須打破,讓我的財產DelegateCommand(的X)來實現,使我有機會對每個命令的RaiseCanExecuteChanged。
是的,我決定走這條路。哎呀,我甚至可能會爲MEF傾倒棱鏡...嘿,謝謝 – ecathell 2010-04-29 17:38:10