У меня есть 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
или даже к Expanders, черт возьми - я не привязан ни к одному из них, если это нужно изменить.
2 ответа
Что определяет, раскрывается ли Expander
? Если это выбор, вы можете связать свойство IsExpanded
со свойством IsSelected
объекта ListBoxItem
:
<Expander IsExpanded="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" ...>
Этот Accordian contro < / a> l может быть то, что вы ищете
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.