Создание коллекции WPF Expanders исключительно «расширяющейся», т.е.одновременно расширяется только один
-
23-08-2019 - |
Вопрос
У меня есть ListBox, содержащий группу элементов «Expander», и я хотел бы сделать IsExpanded
собственность для каждого из них эксклюзивная.Например, если у меня есть 10 расширителей в ListBox
, Я бы хотел, чтобы одновременно был открыт только один.
Вот что у меня есть на данный момент:
<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>
Есть какой-либо способ сделать это?Я не привязан к ListBox
или даже расширители, черт возьми - я не привязан ни к чему из этого, если это нужно изменить.
Решение
Что определяет, является ли Expander
расширен?Если это выбор, вы можете связать IsExpanded
собственность в IsSelected
собственность ListBoxItem
:
<Expander IsExpanded="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" ...>
Другие советы
Этот Аккордовый контрвозможно, я то, что ты ищешь
Не связан с StackOverflow