2011-04-18 35 views
0

嗨我正在開發mvvm wpf應用程序,我的問題是當用戶選擇組合框中的某個項目時我向用戶提問是/否,如果用戶選擇否我想重置價值先前選定的項目..我可以重置它和它的值得到更新..但問題是我設置的舊值是屬性更改事件,它不會在UI中更新(因爲我正在做它內部屬性改變了,我猜)。有沒有任何解決辦法或解決方案。如何禁用或重置其屬性內的值已更改

回答

0

確保您的虛擬機實施INotifyPropertyChanged,然後確保您重置的舊值的屬性在值更改時發送通知。然後綁定將負責更新綁定控件。

public class ViewModel : INotifyPropertyChanged 
{ 
    public object PropertyToReset 
    { 
     get { return _propertyToReset; } 
     set 
     { 
      if (_propertyToReset == value) { return; } 
      // capture the old value in case the user decides not to change the value 
      _oldPropertyToResetValue = _propertyToReset; 
      _propertyToReset = value; 
      NotifyPropertyChanged("PropertyToReset"); 
     } 
    } 

    public bool IsPropertyChanging 
    { 
     get { _isPropertyChanging; } 
     set 
     { 
      if (_isPropertyChanging == value) { return; } 
      _isPropertyChanging = value; 
      NotifyPropertyChanged("IsPropertyChanging"); 
      if (value == false) { PropertyToReset = _oldPropertyToResetValue; } 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void NotifyPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
}