2014-11-11 1 views
0

나는이 상황이 :강제 새로 고침 WPF 바인딩 (하나의 소스는)

  • IsToolbarButtonsEnabledProperty DependencyProperties
  • 를 클래스의 다른 DependencyProperties 많은 (큰 클래스, 수 있도록이 방법이 필요합니다)이
  • 도구 모음에있는 일련의 단추입니다.

각 버튼의 (IsEnabled) 속성 ("PreviousButton", "NextButton"...)

Opacity="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource OpacityBoolToIntConverter}, UpdateSourceTrigger=PropertyChanged}" 
 
          IsEnabled="{Binding Path=DPEnableLinks, Converter={StaticResource ToolButtonEnableConverter}, ConverterParameter='ZoomOut' }"

ToolButtonEnableConverter는 비교하는 변환기 ConvertParameter함으로써, 버튼 구별 지워진 특별한 변환기 throught를 (IsToolbarButtonsEnabledProperty)의 함수 다른 종속성 속성 (in class).의 다른 값을 가진 ConverterParameter "PreviousButton" 나는 하나의 multivalueconverter를 만들기 위해 많은 DP가 필요하다. 나는 변화를 해달라고, 다른 DP들에게 값의 IsEnabled/불투명도를 업데이트 할 때, 그래서 나는 바로 내 클래스에서 ((MainWindow)App.Current.MainWindow;)

질문

  1. 을 읽을. 이 문제를 해결하는 방법?
  2. DP가 바뀔 때마다 바인딩을 새로 고치는 일반적인 해결책이 있습니까?

(반복) : 나는 시간이 지남에 따라 DP를 더 많이 추가 할 것이므로 MultiValueConverter의 이음새가 이상합니다.

답변

0

강제로 바인딩을 업데이트하는 한 가지 방법은 (의미없는) 속성을 만들어 바인딩 (MultiBinding 사용)에 추가하는 것입니다. 바인딩을 업데이트하려면 해당 속성을 변경하면 모든 바인딩이 업데이트됩니다. .

모든 관련 속성에 MultiBinding을 사용하는 것이 더 "직접적인"방법이라는 것을 추가해야합니다. 바인딩해야 할 속성이 많은 경우에는이 기능을 다른 방법으로 구현할 수 있는지 다시 생각해야합니다.