Привязка к свойству в UserControl - PullRequest
1 голос
/ 25 марта 2011

У меня есть 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}" />

но я получаю

Невозможно установить привязку для свойства ExpressionText типа MyUserControl.Привязка может быть установлена ​​только для свойства зависимостей типа Ошибка объекта типа.

Что-то не так в моем подходе?Как мне решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Это должно работать:

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);
    }
}
2 голосов
/ 25 марта 2011

Вы определяете EditorText как имя вашего DependencyProperty. Это имя доступно вам публично. Если вы хотите, чтобы он назывался ExpressionText, вам необходимо зарегистрировать его как имя.

   public static readonly DependencyProperty EditorText =
                           DependencyProperty.Register("ExpressionText", typeof(string), typeof(MyUerControl));
...