Tengo un problema bastante complicado:Cómo guardar el estado IsExpanded en encabezados de grupo de una vista de lista
estoy usando un control ListView con el ItemsSource establece en un CollectionViewSource incluyendo un PropertyGroupDescription agrupar los elementos de lista. El CollectionViewSource se ve así:
<CollectionViewSource x:Key="ListViewObjects">
<CollectionViewSource.Source>
<Binding Path="CurrentListViewData"/>
</CollectionViewSource.Source>
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="ObjectType" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
En el ListView utilizo personalizar los encabezados de grupo como éste:
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True">
<Expander.Header>
<DockPanel>
<TextBlock Text="{Binding Path=Items[0].ObjectType />
</DockPanel>
</Expander.Header>
<Expander.Content>
<ItemsPresenter />
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
Como se puede ver la propiedad IsExpanded del expansor se establece en true. Esto significa que cada vez que se actualiza el ListView, todos los controles del expansor se expanden.
Sin embargo, quiero guardar el último estado de cada expansor. No he podido encontrar una forma de guardar una lista de estados de expansión por tipo de objeto. Estaba experimentando con un HashTable encuadernado y un convertidor, pero no proporcioné ObjectType como ConverterParameter, porque siempre pasaba como una cadena. Pero esa puede no ser la solución de todos modos.
¿Alguien puede darme una pista o una idea para una solución, por favor? :)
¿Seguro que su verdadero problema no es que a su diseño actuales fuerzas de actualizar la vista de lista? –
ListView se actualiza llamando a NotifyPropertyChanged ("CurrentListViewData"). No sabría cómo hacerlo. –