WPF自定义控件模板绑定

6
如何为我的自定义控件定义 TemplateBinding?
2个回答

5

大致如下......(顺便说一下,这个XAML是WPF,不是稍微有些不同的Silverlight)

   <style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Green">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid Background={TemplateBinding Background}
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </style>

现在,一旦您将此样式应用到一个对象上,无论何时设置该对象的背景,模板都将使用Background属性(这是按钮控件上的属性),并将默认为您在样式中设置的值(在本例中为绿色)。
如果您想要使用在样式对象中不存在的属性,则必须派生自己的控件,并将该属性添加为DependencyProperty或使用INotifyPropertyChanged接口。 这里有一个不错的解释。

1
这就是全部了吗?如果我想要创建自己的,只需使用一个具有唯一名称的 Setter 吗? - Peter
属性必须存在于对象上,可以作为DependencyProperty或INotifyPropertyChanged属性的形式。在这种情况下,Background是大多数控件的基本属性。 - Muad'Dib

3

需要更多关于您正在尝试完成的操作的信息。使用以下XAML可以设置TemplateBinding

{TemplateBinding YourProperty} 或者

{Binding RelativeSource={RelativeSource TemplatedParent}, Path=YourProperty}


1
我应该在哪里创建这个绑定的源和默认值? - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接