简体   繁体   English

如何将 HeaderTemplateProperty 应用于 CustomControl 中的 HeaderProperty?

[英]How to apply a HeaderTemplateProperty to a HeaderProperty inside in a CustomControl?

In the MyCustomControl , I created the Heder and HeaderTemplate dependency properties.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)
    {
        // ???;
    }

I don't understand what I have to write for HeaderTemplate to apply to Header .我不明白我必须为HeaderTemplate写什么才能应用于Header I think it needs to be written here OnHeaderTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) , but what exactly?我认为这里需要写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>

You'll bind that in the control template, probably just like this:您将在控件模板中绑定它,可能就像这样:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM