我正在尝试为扩展程序编写HeaderTemplate
。到目前为止,我注意到所有示例都使用{Binding}
关键字从标头中获取数据。但是,如果页眉中有多个控件,会发生什么情况?如何指定应将这些控件插入特定位置?
<Window.Resources>
<Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<!-- what do I put in here? -->
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Expander Style="{StaticResource ExpanderStyle}">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock>Some Text</TextBlock>
<TextBlock Text="{Binding SomeBinding}" />
<Button />
</StackPanel>
</Expander.Header>
<Image Source="https://www.google.com/logos/2012/steno12-hp.jpg" />
</Expander>
我是否应该将样式中的绑定移动到
HeaderTemplate
中,而只是覆盖Header
中的Expander
是什么? 最佳答案
您可以使用ContentPresenter
将任何常规内容插入模板中
例如:
<Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Border BorderBrush="Blue" BorderThickness="2">
<ContentPresenter />
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>