我是Caliburn的一名新人。Caliburn中View和ViewModel之間的相互作用
我有幾個關於MVVM和Caliburn的問題。
視圖如何在ViewModel上顯式調用方法? Caliburn首先調用ViewModel構造函數。那麼,如果是,那麼實例將被包含在哪裏?我的View中的代碼現在創建一個新的實例(我需要顯式地在ViewModel上調用一個方法)。但關於該ViewModel應該已經實例化,這是愚蠢的。
如何強制在UI線程上進行綁定更新?
我是Caliburn的一名新人。Caliburn中View和ViewModel之間的相互作用
我有幾個關於MVVM和Caliburn的問題。
視圖如何在ViewModel上顯式調用方法? Caliburn首先調用ViewModel構造函數。那麼,如果是,那麼實例將被包含在哪裏?我的View中的代碼現在創建一個新的實例(我需要顯式地在ViewModel上調用一個方法)。但關於該ViewModel應該已經實例化,這是愚蠢的。
如何強制在UI線程上進行綁定更新?
Caliburn.Micro的概念是actions從視圖調用視圖模型上的動詞。您可以在很大程度上使用約定,例如,如果在您的視圖中有Button
且x:Name="Save"
,則在點擊Button
時將調用視圖模型上的Save
方法。
您始終可以使用顯式綁定來覆蓋約定,並提供您自己的約定,並且Caliburn.Micro還提供附加屬性以將視圖模型方法與視圖中的事件相關聯。
在迫使UI更新的條款,您的視圖模型將實施INotifyPropertyChanged
,並且Caliburn.Micro提供的這個基地實現,包括PropertyChangedBase
和Screen
(這增加了生命週期)。
然後,您可以使用Caliburn.Micro提供的幫助程序方法調用PropertyChanged
事件。這稱爲NotifyOfPropertyChange
,它可以採用表達式lambda來指定要通知的屬性,而不是使用魔術字符串。