2010-03-01 3 views
1

UserControl에는 - 무엇보다도 - ListView이 포함되어 있습니다. ListView에는 UserControl과 다른 데이터 컨텍스트가 있습니다 (이 데이터 컨텍스트는 노출되지 않음). 누군가 내 컨트롤을 사용하는 경우, 나는 (간접적으로) ListViewItemsSource 종속성 속성에 바인딩 할 수 있기를 바랍니다. 실제로 느낌이 사용자가 전형적인 ItemsSource에 바인딩하는 것처럼 느껴 져야합니다.ItemsSource 전달을위한 모범 사례

진행 방법을 잘 모릅니다. Reflector에서 ItemsControlItemsSource 속성이 얼마나 효과가 있었는지 살펴보면 간단한 포워딩에 필요한 것보다 약간 더 복잡해 보인 논리가 있음을 알 수 있습니다.

현재 가장 좋은 방법은 컬렉션을 외부 컨트롤의 종속성 속성으로 표시하는 것이며, 업데이트되면 ListViewItemsSource을 업데이트하는 것입니다. 그러나 나는이 컬렉션이 어떤 형식이어야하는지 잘 모르겠다. (예를 들어, ObservableCollection<T>을 요구해야한다.) 또는 내가주의해야 할 결함이 있다면.

모든 제안이나 조언을 주시면 감사하겠습니다.

감사합니다.

답변

4

AddOwner를 사용하여 UserControl을 ItemsControl.ItemsSourceProperty의 소유자로 추가하십시오. 새 속성 메타 데이터에서 ListView의 ItemsSource를 설정하는 속성 변경 콜백을 제공하십시오.

+0

내가 필요한 것, 감사합니다! –