У меня есть 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, черт возьми - я не привязан ни к одному из них, если это нужно изменить.

1
Charlotte Skardon 22 Май 2009 в 13:54
 – 
Mike Nakis
5 Авг 2020 в 14:07
- Этот вопрос похожий, но он был задан через полтора года после того, как был задан этот вопрос. Ответ был уже принят, опять же, еще до того, как был придуман другой. В моем вопросе также приведены примеры того, что я пробовал, тогда как «похожий» - это просто вопрос «где это?».
 – 
Charlotte Skardon
6 Авг 2020 в 16:01
Ты прав. Я удалю этот комментарий позже.
 – 
Mike Nakis
6 Авг 2020 в 16:14

2 ответа

Лучший ответ

Что определяет, раскрывается ли Expander? Если это выбор, вы можете связать свойство IsExpanded со свойством IsSelected объекта ListBoxItem:

<Expander IsExpanded="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" ...>
7
Tim Cooper 27 Сен 2011 в 19:25
Добро пожаловать, Крис. Если он ответил на ваш вопрос, не могли бы вы отметить его как ответ?
 – 
Kent Boogaart
23 Май 2009 в 11:07
Извините - потратил целую вечность на поиски, как это сделать, галочка была скрыта от меня в FireFox ...
 – 
Charlotte Skardon
26 Май 2009 в 17:21