Расширение коллекции WPF Expanders, то есть только одно расширение за раз - PullRequest
1 голос
/ 22 мая 2009

У меня есть ListBox, содержащий группу элементов 'Expander', и я хотел бы сделать свойство IsExpanded для каждого из них эксклюзивным. Например, если у меня в ListBox 10 расширителей, я бы хотел, чтобы только один был открыт одновременно.

Вот что у меня есть:

<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 ]

7 голосов
/ 22 мая 2009

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

<Expander IsExpanded="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" ...>
0 голосов
/ 22 мая 2009

Это Accordian contro l может быть то, что вы ищете

...