2

我试图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
4

1 回答 1

0

对于样式,您可以尝试绑定到 Selector.IsSelected 附加属性,如此处所示MSDN Selector.IsSelected

于 2012-07-19T18:21:44.170 回答