Создание коллекции WPF Expanders исключительно «расширяющейся», т.е.одновременно расширяется только один

StackOverflow https://stackoverflow.com/questions/897146

Вопрос

У меня есть 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}}}" ...>

Другие советы

Этот Аккордовый контрвозможно, я то, что ты ищешь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top