绑定到UserControl中的属性

时间:2011-03-25 12:00:42

标签: c# wpf data-binding user-controls dependency-properties

我有一个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属性上。

我的做法有问题吗?我该如何解决这个问题?

2 个答案:

答案 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);
    }
}