'ContentTemplate'은 'FooList'(ObservableCollection) 멤버가있는 개체를 표시하는 DataTemplate입니다.DataTemplate 내 CollectionViewSource 바인딩
<DataTemplate x:Key="ContentTemplate">
<ListBox ItemsSource="{Binding Path=FOO}">
...
</ListBox>
</DataTemplate>
나는 그 FooList를 CollectionViewSource를 사용하여 필터링 할 수 있어야합니다. 이것은 대개 앞으로 간단하지만 DataTemplate 내에서 바인딩이 작동하지 않는 것 같습니다. 나는이 시도 :
<DataTemplate x:Key="ContentTemplate">
<DataTemplate.Resources>
<CollectionViewSource x:Key="CVS" Source="{Binding Path=FooList}" Filter="FooFilter"/>
<DataTemplate.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource CVS}}">
나는이에서 얻을 오류는 다음과 같습니다
System.Windows.Data 오류 : 2 : 대상 요소에 적용 FrameworkElement 또는 FrameworkContentElement를 찾을 수 없습니다. BindingExpression : Path = FooList; DataItem = null; 대상 요소는 'CollectionViewSource'(HashCode = 52991666)입니다. 대상 속성이 'Source'(유형 '개체')입니다.
DataTemplate에 바인딩 된 개체 대신 CollectionViewSource에서 'FooList'를 찾고있는 것처럼 들리는데요.
그래서 ... 올바른 대상을 보려면 어떻게해야합니까?
동일한 문제가 있습니다. 내가 생각할 수있는 것은 CVS가이 레벨에서 DataContext 여야하는 올바른 바인딩 소스 ('FooList'멤버)를 알지 못한다는 것입니다. 명시 적으로 CVS에있는 소스를 DataTemplate의 현재 DataContext로 설정하는 방법이 있습니까? 다시 말하지만, 이것이 우리 모두에게 효과가있는 것은 아닙니다. (당신과 내 사이의 유일한 차이점은 내부 ListBox에 바인딩한다는 것입니다. 나는 treeview에서 사용하기 위해 HierarchicalDataTemplate의 자식 항목에 바인딩하고 있습니다. 그러나 그 외에는, 당신과 나는 같은 보트에 있습니다. – MarqueIV
그것은 내게 그것은 리소스 부분 안에있는 DataTemplate의 데이터에 접근 할 수있는 것으로 보이지 않습니다. 누구든지 그게 정확한지 알고 있습니까? –