2016-12-13 174 views
-2

我正在開發一個UWP應用程序,其中我遵循MVVM模式。更新模型MVVM的ViewModel屬性UWP

我有一個視圖模型中的屬性綁定到視圖。我在處理多個任務的服務中有一個功能。

每次活動執行後,我需要更新視圖模型中的屬性。

ViewModel.cs

public Brush CurrentGetExecutionColor 
     { 
      get { return _currentGetExecutionColor; } 
      set { Set(ref _currentGetExecutionColor, value); } 
     } 

public DelegateCommand DelegateCommandProcess 
      => _delegateCommandProcess ?? (_delegateCommandProcess = new DelegateCommand(async() => 
      { 
       await _service.ProcessMethod(); 
      })); 

Service.cs

private async Task<bool> ProcessMethod() 
    { 
     While(condition) 
     { 
      Process(); 
      //UpdateViewModel property 
     CurrentGetExecutionColor = Color.Red; 
     } 
    } 

我怎樣才能實現這個功能,這樣我可以從服務更新視圖模型屬性。

在此先感謝。

+1

您正在尋找這樣的:http://stackoverflow.com/questions/15439841/mvvm-in-wpf-how-to-alert -view-of-changes-in-model-or-should-i – Alex

+1

您可以在模型上實現INotifyPropChanged,並讓虛擬機訂閱該模型。但這取決於很多細節,問題不是很完整。 –

+0

我已更新我的帖子。你可以請看看。謝謝:) –

回答

0

嘗試在你的屬性來實現OnPropertyChanged,像這樣:

private Type _yourProperty; 
public Type YourProperty 
{ 
    get { return _yourProperty; } 
    set 
    { 
     _yourProperty = value; 
     OnPropertyChanged(); 
    } 
} 


public event PropertyChangedEventHandler PropertyChanged;  
private void OnPropertyChanged([CallerMemberName] string propertyName = null) 
{ 
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
} 
+0

什麼是「處理程序= ...」?如果使用空傳播,那完全是多餘的,直接調用'PropertyChanged?.Invoke ...'。 – Haukinger

+0

對不起,做得很快,當然你是對的:) –