2012-08-25 71 views
0

在我的silverlight應用程序中,我需要從ViewModel發送通知給View。爲了響應它,應該調用UI控件上的方法。我知道有兩種方法可以達到這個效果:使用MVVM Light從ViewModel查看通知

1)在ViewModel中引發一個事件,並在View的代碼後面處理它。
2)從ViewModel發送一條消息(使用MVVM Light消息支持),並在後面的View代碼中響應此消息。

我想知道是否有辦法在後面的View代碼中使用代碼,例如通過XAML中的某種數據綁定來完成此操作?

請分享任何想法。

什麼時候收到通知從視圖模型
在視圖的XAML我宣佈它具有以下方法自定義的Silverlight網格控件實例的視圖應該做的附加信息:
public void FileExportFinished(bool fileExportSucceeded)
我希望從XAML中調用此方法,以響應從ViewModel收到的通知,並傳遞通知接收到的布爾值。

+0

這取決於你想要處理什麼,你想要處理它以及如何處理它。也許'DataTrigger'? – dvvrd

+0

你可以給你多一點解釋你正在嘗試處理什麼? –

+0

我已更新該問題,請檢查它。 – Narek

回答

3

是的......你可以在依賴屬性的幫助下做到這一點。

  1. 爲該視圖創建一個依賴屬性(使其成爲布爾類型,因爲我們只需要該屬性來調用另一個視圖方法)。
  2. 在其財產更改回調,作出規定,以調用您所需的查看方法。
  3. 然後用ViewModel中的一個屬性綁定DependencyProperty。
  4. 所以,當你需要更新視圖時,只需設置上面提到的綁定屬性,這將觸發依賴屬性改變回調的屬性,並在那裏形成你需要的視圖方法。
+0

感謝您的迴應,但我不明白我怎樣才能避免在視圖代碼中使用代碼來使用您的方法。 – Narek

+0

好的......所以不要依賴,你可以使用可以在任何類中寫入的附加屬性。然後,它的屬性發生變化,您將得到發件人,在那裏您可以將其投射到您的視圖並調用所需的方法。對不起,以上建議\ –

+0

再次感謝,但這不是我正在尋找。 – Narek

0

爲什麼不簡單地在你的viewmodel中使用一個Property和你的xaml中的DataTrigger?

如果你想要某種對話框彈出,你可以使用對話服務。你應該真的添加你想對你的問題做什麼。當通知到達時,您認爲應該發生什麼?

btw Messenger是用於viewmodel-viewmodel通信的,所以這不是一個選項。

+0

感謝您的回覆。我已更新問題並添加了更多詳細信息,請檢查它。 – Narek

+1

與您更新的問題我會使用您的選項1.它不違反mvvm,你可以做你需要的。 – blindmeis

相關問題