如何将 HeaderTemplateProperty 应用于自定义控件中的 HeaderProperty?



MyCustomControl中,我创建了HederHeaderTemplate依赖属性。

public static readonly DependencyProperty HeaderProperty =
DependencyProperty.Register(
"Header",
typeof(object),
typeof(MyCustomControl),
new FrameworkPropertyMetadata(
(object)null,
new PropertyChangedCallback(OnHeaderChanged)));

public static readonly DependencyProperty HeaderTemplateProperty =
DependencyProperty.Register(
"HeaderTemplate",
typeof(DataTemplate),
typeof(MyCustomControl),
new FrameworkPropertyMetadata(
(DataTemplate)null,
new PropertyChangedCallback(OnHeaderTemplateChanged)));
private static void OnHeaderTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// ???;
}

我不明白我必须写什么才能HeaderTemplate适用于Header.我认为它需要写在这里OnHeaderTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e),但究竟是什么?

<Style TargetType="{x:Type local:MyCustomControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyCustomControl}">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter ContentSource="Header"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

您将在控件模板中绑定它,可能就像这样:

<ContentPresenter 
ContentSource="Header"
ContentTemplate="{TemplateBinding HeaderTemplate}"
/>

最新更新