我正在尝试为扩展程序编写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
的任何内容吗?
答案 0 :(得分:2)
您可以使用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>
答案 1 :(得分:0)
标题的属性内容只能包含一个对象。
如果您在一个面板中合并这些对象:
<StackPanel>
<TextBlock>Some Text</TextBlock>
<TextBlock Text="{Binding SomeBinding}" />
<Button />
</StackPanel>
然后在模板中你可以使用{binding}