自定义控件绑定属性

时间:2012-06-19 09:57:06

标签: c# xaml binding custom-controls

我已经创建了一个自定义控件但是我无法将属性绑定到这样的内容:

<Style TargetType="control:Pie">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="control:Pie">
                    <Border
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">

                        <ContentControl Content="{Binding Path=Test}"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

在我的掌控之中

public string Test
    {
        get { return (string)GetValue(TestProperty); }
        set { SetValue(TestProperty, value); }
    }
    public static readonly DependencyProperty TestProperty =
        DependencyProperty.Register(
            "Test",
            typeof(string),
            typeof(Pie),
            new PropertyMetadata(null));

当我创建控件时,在Test属性中设置一个字符串,但视图中没有任何内容......

1 个答案:

答案 0 :(得分:2)

TemplateBinding用于绑定到模板化控件,因此仅适用于ControlTemplate。你上面只有2行已经使用了TemplateBinding for Background,BorderBrush和BorderThickness。

另一方面,

Binding绑定到DataContextControlTemplate是一个用来采取&#34; business&#34;来自用户的相关数据。它应该与控件的工作方式无关,并且

根据经验法则:如果您在RelativeSource中使用普通绑定,而ElementNameSource或{{1}}设置不正常,它通常不应出现在ControlTemplate或Style中。