簡體   English   中英

如何將 HeaderTemplateProperty 應用於 CustomControl 中的 HeaderProperty?

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

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}"
    />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM