我有一个usercontrol,我希望在其中公开一个名为ExpressionText的属性 xaml可以为此属性定义绑定。 所以我创建了一个依赖属性
public static readonly DependencyProperty EditorText =DependencyProperty.Register("EditorText", typeof(string), typeof(MyUerControl));
和
public string ExpressionText
{
get
{
return (string)GetValue(EditorText);
}
set
{
SetValue(EditorText, value);
}
}
在xaml中我这样做。
<controls:MyUerControl x:Name="textEditor" ExpressionText="{Binding
Path=Expression,Mode=TwoWay}" />
但是我得到了
无法在MyUserControl类型的ExpressionText属性上设置绑定。绑定可以设置 仅在Dependency对象错误类型的depenedecy属性上。
我的做法有问题吗?我该如何解决这个问题?
答案 0 :(得分:2)
您正在将EditorText定义为DependencyProperty的名称。这是公开可供您绑定的名称。如果您希望将其命名为ExpressionText,则需要将其注册为名称。
public static readonly DependencyProperty EditorText =
DependencyProperty.Register("ExpressionText", typeof(string), typeof(MyUerControl));
答案 1 :(得分:2)
这应该有效:
public static DependencyProperty EditorTextProperty = DependencyProperty.Register("ExpressionText", typeof(string), typeof(MyUserControl),
new PropertyMetadata(new PropertyChangedCallback((s, e) =>
{ })));
public string ExpressionText
{
get
{
return (string)base.GetValue(EditorTextProperty);
}
set
{
base.SetValue(EditorTextProperty, value);
}
}