2011-04-18 62 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)); 
     } 
    } 
}