2011-04-18 6 views
0

안녕하세요, mvvm wpf 응용 프로그램을 개발하고 있습니다. 내 문제는 사용자가 콤보 상자에서 항목을 선택할 때입니다. 예/아니오로 사용자에게 질문합니다. 이전에 선택한 항목의 값을 .. 내가 그것을 재설정 할 수있는 값을 업데이 트하고 ..하지만 문제는 내가 설정 오전 속성 변경된 이벤트 안에있는 UI에서 업데이 트되지 않습니다 이전 값입니다 (내가 그것을하고 있기 때문에 내부 속성 변경, 아마도). 이 문제를 해결하기위한 해결책이 있습니까?속성을 비활성화하거나 값을 재설정하는 방법을 변경했습니다.

답변

0

VM이 INotifyPropertyChanged을 구현하는지 확인한 다음 이전 값을 재설정하는 속성의 값이 변경되면 알림을 보내도록하십시오. Binding은 바인딩 된 컨트롤을 업데이트합니다.

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)); 
     } 
    } 
} 
관련 문제