問題 - 用戶點擊「做某事」按鈕(視圖),視圖模型接收命令並將其傳遞給模型(函數調用)。一段時間過後,模型完成處理數據(異步)。模型如何通知viewmodel關於「需要更新」/「完成」? 什麼是最好的方法?在這種情況下,我如何從ViewModel中分離模型?MVVM簡單問題
Q
MVVM簡單問題
1
A
回答
4
您可以在模型中實現一個普通的舊事件,該事件可以從ViewModel訂閱。
更新
在回答您的評論。
如果您使用多個線程,那麼您需要了解「Dispatcher」框架以確保來自非UI線程的調用已正確同步到UI線程中。這是WPF的一項要求。請參閱:
1
我認爲這樣做的正常方法是使用INotifyPropertyChanged接口。我不是100%確定它是如何工作的,因爲我對WPF還比較陌生,但通常情況下,只要屬性發生更改,就會觸發事件,傳入屬性的名稱並更新該屬性的綁定。
下面是一些示例代碼。然後你會綁定到IsSelected屬性(因爲我相信這應該是你的ViewModel)。
public class TestProperty : INotifyPropertyChanged
{
public Boolean IsSelected
{
get { return isSelected; }
set
{
isSelected = value;
this.NotifyPropertyChanged("IsSelected");
}
}
private bool isSelected;
/// <summary>
/// Occurs when a property value changes.
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Notifies the property changed.
/// </summary>
/// <param name="propertyName">Name of the property.</param>
private void NotifyPropertyChanged(String propertyName)
{
this.VerifyPropertyName(propertyName);
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
0
您可能會發現WPF Application Framework (WAF)有用的示例應用程序。它們顯示模型如何通過事件與ViewModel或View進行通信。
相關問題
- 1. 非常非常簡單的MVVM問題
- 2. 簡單的WPF MVVM綁定問題
- 3. 簡單的MVVM綁定問題
- 4. 簡單Grep問題
- 5. (簡單)問題TweetSharp
- 6. 簡單fizzbuzz問題
- 7. 簡單$ _GET問題
- 8. 簡單C問題
- 9. CSS問題簡單
- 10. Xpath簡單問題
- 11. Prolog簡單問題
- 12. Lisp簡單問題
- 13. 簡單TableView問題
- 14. 簡單RDOC問題
- 15. 簡單Jeditable問題
- 16. Drupal簡單問題
- 17. 簡單CARRAY問題
- 18. 簡單的問題
- 19. AVMutableAudioMix簡單問題
- 20. INotifyPropertyChanged簡單問題
- 21. 簡單的問題
- 22. 簡單的問題
- 23. Ajax簡單問題
- 24. Calloc簡單問題
- 25. MVVM WPF問題
- 26. Silverlight MVVM問題
- 27. Silverlight MVVM問題
- 28. 針對Pivot的簡單MVVM
- 29. 簡單的WPF + MVVM綁定
- 30. WPF MVVM EF簡單示例
我該怎麼做? :)新學校在這裏! – 2010-07-13 19:41:28
@ 0xDEAD BEEF除了訂閱自己沒有寫過的組件的事件外,知道如何實現自己的事件非常有用,例如http://msdn.microsoft.com/en-us/library/w369ty8x.aspx。對於初學者來說,事件可能是一個困難的概念 - 我事先對此表示歉意:) – 2010-07-13 19:45:39
@@ 0xDEAD BEEF不確定這是否是實現事件的最佳示例,但是如果您有C#書籍,則應該涵蓋此主題。 – 2010-07-13 19:48:31