جعل مجموعة من موسعي WPF "توسيع" على وجه الحصر، أي واحد فقط تم توسيعه في وقت واحد

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

سؤال

لدي مربع قائمة تحتوي على مجموعة من عناصر "المتوسع"، وما أود القيام به هو جعل 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