2012-11-22 74 views
1

我是Caliburn的一名新人。Caliburn中View和ViewModel之間的相互作用

我有幾個關於MVVM和Caliburn的問題。

  1. 視圖如何在ViewModel上顯式調用方法? Caliburn首先調用ViewModel構造函數。那麼,如果是,那麼實例將被包含在哪裏?我的View中的代碼現在創建一個新的實例(我需要顯式地在ViewModel上調用一個方法)。但關於該ViewModel應該已經實例化,這是愚蠢的。

  2. 如何強制在UI線程上進行綁定更新?

回答

4

Caliburn.Micro的概念是actions從視圖調用視圖模型上的動詞。您可以在很大程度上使用約定,例如,如果在您的視圖中有Buttonx:Name="Save",則在點擊Button時將調用視圖模型上的Save方法。

您始終可以使用顯式綁定來覆蓋約定,並提供您自己的約定,並且Caliburn.Micro還提供附加屬性以將視圖模型方法與視圖中的事件相關聯。

在迫使UI更新的條款,您的視圖模型將實施INotifyPropertyChanged,並且Caliburn.Micro提供的這個基地實現,包括PropertyChangedBaseScreen(這增加了生命週期)。

然後,您可以使用Caliburn.Micro提供的幫助程序方法調用PropertyChanged事件。這稱爲NotifyOfPropertyChange,它可以採用表達式lambda來指定要通知的屬性,而不是使用魔術字符串。

相關問題