我正在尝试将样式应用于具有类似外观和功能的多个扩展器。但问题是如果我设置Expander.Content样式,其中只有一个会有内容,其余的都是空的。
最小例子:
<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)实际上移动到第一个扩展器。
为什么会这样?以及如何解决它?
答案 0 :(得分:1)
样式只创建一个实例,对于可视元素,它只能是单个父元素的子元素。直接设置ContentTemplate
而不是Content
。 (模板只描述控件使用它创建的内容,因此可以共享。)