'ContentTemplate' es un DataTemplate que muestra un objeto que tiene un miembro 'FooList' (un ObservableCollection).Enlazando un CollectionViewSource dentro de un DataTemplate
<DataTemplate x:Key="ContentTemplate">
<ListBox ItemsSource="{Binding Path=FOO}">
...
</ListBox>
</DataTemplate>
Necesito poder filtrar ese FooList usando un CollectionViewSource. Por lo general, esto ha sido sencillo, pero parece que no puedo lograr que el enlace funcione en una plantilla de datos. Me trató de esto:
<DataTemplate x:Key="ContentTemplate">
<DataTemplate.Resources>
<CollectionViewSource x:Key="CVS" Source="{Binding Path=FooList}" Filter="FooFilter"/>
<DataTemplate.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource CVS}}">
Los errores que recibo de esto es:
System.Windows.Data de error: 2: No se puede encontrar FrameworkElement de gobierno o FrameworkContentElement de elemento de destino. BindingExpression: Path = FooList; DataItem = null; el elemento de destino es 'CollectionViewSource' (HashCode = 52991666); target property es 'Fuente' (tipo 'Objeto')
Lo que me parece que está buscando 'FooList' en CollectionViewSource en lugar del objeto vinculado al DataTemplate.
Entonces ... ¿cómo hago para ver el objeto correcto?
Estoy teniendo el mismo problema. Lo único que se me ocurre es que el CVS no sabe la fuente correcta del enlace (su miembro 'Foolista') que debería ser el DataContext en este nivel. ¿Hay alguna manera de establecer explícitamente la fuente en el CVS al DataContext actual de DataTemplate? Una vez más, se debe suponer, pero esto no funciona para los dos. (La única diferencia entre el tuyo y el mío es que estás vinculando a un ListBox interno. Estoy vinculado a los elementos secundarios de una HierarchicalDataTemplate para usar en una vista de árbol. Pero aparte de eso, tú y yo estamos en el mismo barco. – MarqueIV
Me parece que se supone que no debe tener acceso a los datos de DataTemplate dentro de la parte del recurso. ¿Alguien sabe si es correcto? –