WPF嵌套扩展器绑定到ListBoxItem不起作用

时间:2012-07-19 17:59:24

标签: .net wpf binding

我尝试将Expander一次打开​​一起使用。我从MSDN Forum Link获得了一段代码。

<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”某些如何链接到扩展器“Two”所附的 ListBoxItem

Expanders "Sub-One" and "Sub-Two" getting expanded and collapsed at same time

我想我需要在绑定中做一些改变但是无法做到。

<Style TargetType="{x:Type Expander}">
    <Setter Property="IsExpanded"
        Value="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"/>
</Style>

任何指导都会有很大的帮助 注意: - 我尝试的几件事

    - 在代码中检查扩展器的父节点,只有ListBox即将到来,并且层次结构中没有ListBoxItem - 尝试向AncestorLevel添加不同的值,除1之外没有值工作
    - 考虑绑定到ListBox SelectedIndex,这也是我无法让它工作,因为无法想到将SelectedIndex转换为IsExpandable,即使我使用转换器

1 个答案:

答案 0 :(得分:0)

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