我已经创建了一个自定义控件但是我无法将属性绑定到这样的内容:
<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属性中设置一个字符串,但视图中没有任何内容......
答案 0 :(得分:2)
TemplateBinding
用于绑定到模板化控件,因此仅适用于ControlTemplate
。你上面只有2行已经使用了TemplateBinding for Background,BorderBrush和BorderThickness。
Binding
绑定到DataContext
,ControlTemplate
是一个用来采取&#34; business&#34;来自用户的相关数据。它应该与控件的工作方式无关,并且
根据经验法则:如果您在RelativeSource
中使用普通绑定,而ElementName
,Source
或{{1}}设置不正常,它通常不应出现在ControlTemplate或Style中。