「ContentTemplate」は、メンバー「FooList」(ObservableCollection)を持つオブジェクトを表示するDataTemplateです。
<DataTemplate x:Key="ContentTemplate">
<ListBox ItemsSource="{Binding Path=FOO}">
...
</ListBox>
</DataTemplate>
CollectionViewSourceを使用してそのFooListをフィルタリングできるようにする必要があります。これは通常簡単ですが、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); ターゲットプロパティは「ソース」(タイプ「オブジェクト」)です
これは、DataTemplateにバインドされたオブジェクトではなく、CollectionViewSourceで「FooList」を探しているように聞こえます。
だから...どうすればこれで正しいオブジェクトを見ることができますか?