2012-05-17 2 views
0

내 문제는 내 WPF 응용 프로그램에서 상호 종속적 인 세 가지 속성이 있습니다. 클래스에 대해서도 InotifyPropertyChanged를 구현했습니다. 다른 속성을 기반으로 두 번째 속성을 업데이트하는 방법을 잘 모르겠습니다.속성을 기반으로하는 다른 속성 업데이트

예 :

속성 : ActualValue, ChangedValue는

ActualValue가 고정되어 변경, ChangedValue 변경을 업데이트 할 수 있습니다. 즉, ChangedValue를 업데이트하면 변경은 (ActualValue-ChangedValue)와 같이 계산되고 설정됩니다. Change가 업데이트되면 ActualValue 및 Change를 기반으로 ChangedValue가 계산됩니다.

답변

1

다른 사람이 의존하는 속성의 설정자 안에 논리를 넣을 수 있습니다. 원형 의존성이기 때문에 setter 내부에서 private 변수를 변경해야합니다. 즉 속성 setter를 사용하지 마십시오. 무한 루프가 생성됩니다. 이처럼 :

private string _change, _changedValue; 

public string ChangedValue { 
    set { 
     _changedValue = value; 
     _change = ActualValue - _changedValue; 
     NotifyPropertyChanged("ChangedValue"); 
     NotifyPropertyChanged("Change"); 
    } 
} 


public string Change { 
    set { 
     _change = value; 
     _changedValue = ActualValue - _change; 
     NotifyPropertyChanged("Change"); 
     NotifyPropertyChanged("ChangedValue"); 
    } 
} 
+1

또한 "ChangeValue"모두가 그들에게 어떤 데이터 바인딩으로 업데이트되도록 "변경"에 대한 세터의 모두 RaisePropertyChanged 이벤트를 추가해야합니다. –

+0

@ PhilWright 아, 고마워, 그걸 잊어 버렸어. 업데이트 됨. – McGarnagle

+1

매번 두 값을 모두 수정 했으므로 두 Setters에서 ChangeValue AND Change를 높여야합니다. –

관련 문제