'ContentTemplate' è un DataTemplate che visualizza un oggetto che ha un membro 'FooList' (ObservableCollection).Binding a CollectionViewSource in un DataTemplate
<DataTemplate x:Key="ContentTemplate">
<ListBox ItemsSource="{Binding Path=FOO}">
...
</ListBox>
</DataTemplate>
Devo essere in grado di filtrare FooList utilizzando una CollectionViewSource. Questo è in genere semplice ma non riesco a far funzionare l'associazione all'interno di un DataTemplate. Ho tentato di questo:
<DataTemplate x:Key="ContentTemplate">
<DataTemplate.Resources>
<CollectionViewSource x:Key="CVS" Source="{Binding Path=FooList}" Filter="FooFilter"/>
<DataTemplate.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource CVS}}">
Gli errori che ricevo da questo è:
System.Windows.Data Errore: 2: Impossibile trovare governare FrameworkElement o FrameworkContentElement per elemento di destinazione. BindingExpression: Path = FooList; DataItem = null; l'elemento target è 'CollectionViewSource' (HashCode = 52991666); La proprietà target è 'Origine' (tipo 'Oggetto')
A me sembra che stia cercando "FooList" su CollectionViewSource anziché sull'oggetto associato a DataTemplate.
Quindi ... come posso ottenere questo per vedere l'oggetto corretto?
Ho lo stesso problema. L'unica cosa che posso pensare è che il CVS non conosce la fonte corretta per il binding (il tuo membro 'FooList') che dovrebbe essere il DataContext a questo livello. C'è un modo per impostare esplicitamente la sorgente sul CVS al DataContext corrente del DataTemplate? Ancora una volta, dovrebbe essere assunto, ma questo non funziona per entrambi. (L'unica differenza tra la tua e la mia è che ti stai legando a un ListBox interno. Sono vincolante per gli elementi secondari di un HierarchicalDataTemplate da usare in una vista ad albero. Ma a parte questo, tu ed io siamo nella stessa barca. – MarqueIV
Mi sembra che non si supponga di avere accesso ai Dati del DataTemplate all'interno della parte della risorsa.Qualcuno sa se è corretto? –