我试图Expander
一次打开一个。我从MSDN 论坛链接获得了一个代码。
<ListBox>
<!-- all styles and templates-->
<Expander Header="One"><!-- some content --></Expander>
<Expander Header="Two"><!-- some other content --></Expander>
</ListBox>
它工作正常。一次只能打开上述扩展器之一。
但是,如果我尝试嵌套扩展器,则较低的扩展器不会像上面的代码那样按需要打开和关闭。意思是如果我将内容添加到扩展器“二”,如下所示
<Expander Header="Two">
<ListBox>
<!-- same styles and templates as above-->
<Expander Header="Sub-One"><!-- some content --></Expander>
<Expander Header="Sub-Two"><!-- some other content --></Expander>
</ListBox>
</Expander>
扩展器“Sub-One”和“Sub-Two”与 ListBoxItem
扩展器“Two”所连接的相同
我想我需要对绑定进行一些更改,但无法做到。
<Style TargetType="{x:Type Expander}">
<Setter Property="IsExpanded"
Value="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"/>
</Style>
任何指导都会有很大帮助。
注意:-我尝试过的几件事
-
- 在代码中检查了 Expander 的父级,只有 ListBox 来了,并且层次结构中没有 ListBoxItem
- 尝试向 AncestorLevel 添加不同的值,除了 1 之外没有任何值
- 正在考虑绑定到 ListBox SelectedIndex,这也是我无法做到的即使我使用转换器,也无法将 SelectedIndex 转换为 IsExpandable