Expander.Content仅适用于一个

时间:2016-08-11 16:37:53

标签: wpf xaml

我正在尝试将样式应用于具有类似外观和功能的多个扩展器。但问题是如果我设置Expander.Content样式,其中只有一个会有内容,其余的都是空的。

enter image description here

最小例子:

<Style TargetType="Expander" BasedOn="{StaticResource {x:Type Expander}}">
    <Setter Property="Header">
        <Setter.Value>
            Header
        </Setter.Value>
    </Setter>
    <Setter Property="Content">
        <Setter.Value>
            <TextBlock Text="1"/>
        </Setter.Value>
    </Setter>
</Style>

<!-- .... -->

<Expander Grid.Row="0"/>
<Expander Grid.Row="1"/>
<Expander Grid.Row="2"/>

如您所见,在设计时只有第二行有内容(1)。在运行时,只有最后一个扩展器具有内容(1)。

如果我点击第一个扩展器,第三个扩展器中的内容(1)实际上移动到第一个扩展器。

为什么会这样?以及如何解决它?

1 个答案:

答案 0 :(得分:1)

样式只创建一个实例,对于可视元素,它只能是单个父元素的子元素。直接设置ContentTemplate而不是Content(模板只描述控件使用它创建的内容,因此可以共享。)