2013-08-15 3 views
2

내가 문자열 속성에 바인딩 한방향텍스트 상자를 가지고 있고, 나는 그것이 업데이트 할 때 내 의 DataContext 변화에 대한 몇 가지 다른 속성입니다. 내 DataContextObservableCollection이고 TextBox은 컬렉션에 대한 통계를 표시합니다. 따라서 컬렉션이 변경 될 때마다 통계가 업데이트되기를 원하지만 더미 "통계 변경"이벤트를 발생시키지 않으려합니다.하나의 데이터 소스에 바인딩하지만 다른 데이터 소스에서 트리거를 업데이트하려면 어떻게합니까?

즉, XAML (또는 일반적으로 데이터 바인딩)은 컨트롤의 데이터와 업데이트 이벤트에 대해 하나의 바인딩을 지정할 수 있습니까? 당신이 원하는 것을 달성하기 훨씬 쉬운 방법이 내가 제대로 이해하면

+1

바인딩에 사용 된 속성에 대해 변경된 속성을 올리지 않으려면 'MultiBinding'을 사용하고 그 둘 모두를 바인딩 속성으로 설정하고 필요할 때 UpdateTrigger를 변환기에서 언급 할 수 있습니다/string-format은 첫 번째 Binding 값을 결과에 적용합니다 (첫 번째 Binding은 통계 임). 'Binding.StringFormat'은 사용자 정의 변환기를 피하고 xaml에서 할 수있는 것처럼 더 좋아야합니다. – Viv

답변

0

:

<ListBox ItemsSource={Binding Items} /> 

<TextBox Text="{Binding Items/PropertyName}" /> 

ObservableCollection이보기 모델 (또는 DataContext) 거기에 그 PropertyName라는 이름의 바인딩 속성이 있다고 가정하면이 Items 유형이 ObservableCollection 인 경우 TextBox 컨트롤에 컬렉션에 현재 선택된 항목의 PropertyName 값이 표시됩니다.

MSDN의 PropertyPath XAML Syntax 페이지에서 '/'경로 구문에 대해 자세히 알아볼 수 있습니다.

+0

질문은 collection_에 대한 _display 통계를 나타냅니다. 나에게 적어도 컬렉션의 속성을 원한다는 것을 의미한다. – Shoe

+0

@ 짐. 내 대답을 다시 읽고 싶을 수도있다. 특히 '* ObservableCollection에 PropertyName이라는 바인드 가능 속성이 있다고 가정한다. * '. – Sheridan

+0

컬렉션의 속성이며 현재 항목의 속성은 아닙니다. 그래서 컬렉션의 크기를보고 싶다면'{Binding Items.Count, Mode = OneWay} '에 바인드해야합니다. 'Items/PropertyName'은'Person' 클래스에서'PropertyName'을 찾습니다. ObservableCollection에서 속성을 찾지 않습니다. – Shoe

관련 문제