Facendo una raccolta di WPF espansori 'ampliare' esclusivamente, cioè un solo espansa alla volta
-
23-08-2019 - |
Domanda
Ho un ListBox che contiene un gruppo di elementi 'Expander', e quello che mi piacerebbe fare è rendere la proprietà IsExpanded
per ciascuno di essi esclusivi. Per esempio, se ho 10 espansori del ListBox
, mi piacerebbe unico ad essere aperto alla volta.
Ecco quello che ho finora:
<Window>
<Window.Resources>
<DataTemplate x:Key="NormalTemplate">
<Expander Margin="0" IsExpanded="True" Header="{Binding Model.Name}" Background="Green">
<Grid>
<StackPanel HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Model.Description}" TextWrapping="Wrap" HorizontalAlignment="Stretch" Margin="0"/>
</StackPanel>
</Grid>
</Expander>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Groups}"
ItemTemplate="{DynamicResource NormalTemplate}"
/>
</Grid>
</Window>
Esiste un modo per fare questo? Io non sono legato ad un ListBox
o anzi espansori, diamine -. Non sono legato ad alcuna di esso, se ha bisogno di cambiare
Soluzione
Che cosa determina se un Expander
è espanso? Se si tratta di selezione, è possibile associare la proprietà IsExpanded
alla proprietà IsSelected
del ListBoxItem
:
<Expander IsExpanded="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" ...>
Altri suggerimenti
fisarmonica Contro l forse quello che stai cercando per
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow