جعل مجموعة من موسعي WPF "توسيع" على وجه الحصر، أي واحد فقط تم توسيعه في وقت واحد
-
23-08-2019 - |
سؤال
لدي مربع قائمة تحتوي على مجموعة من عناصر "المتوسع"، وما أود القيام به هو جعل 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}}}" ...>
نصائح أخرى
هذه أكوردون كوندول ربما ما تبحث عنه
لا تنتمي إلى StackOverflow