如何直接绑定到控件

时间:2014-03-07 10:05:07

标签: c# .net wpf controls

我创建了一个与RichTextBox一起使用的用户控件。用户控件需要使用RichTextBox,所以我创建了一个依赖属性,如下所示:

    public static DependencyProperty RichTextEditControlProperty;

    static RichTextBoxToolbar()
    {
        RichTextEditControlProperty = DependencyProperty.Register("RichTextEditControl", typeof(RichTextBox), typeof(RichTextBoxToolbar), new FrameworkPropertyMetadata(null));
    }

    public RichTextBoxToolbar()
    {
        InitializeComponent();
    }

    public RichTextBox RichTextBoxControl
    {
        get { return (RichTextBox)GetValue(RichTextEditControlProperty); }
        set { SetValue(RichTextEditControlProperty, value); }
    }

但是,我不知道如何在XAML中设置此属性。我试过这样的

my:RichTextBoxToolbar Margin="0" DockPanel.Dock="Top" 
                      RichTextBoxControl="{Binding , ElementName=headerText}"

其中headerText是RichTextBox的名称。

但是得到以下错误:

  

无法在类型的'RichTextBoxControl'属性上设置'绑定'   'RichTextBoxToolbar'。 '绑定'只能在a上设置   DependencyProperty的一个   DependencyObject的。 C:\ Users \ stefan.CORP \ Documents \ Visual Studio

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

静态DependencyProperty标识符中的属性名称不正确。

DependencyProperty.Register("RichTextEditControl", typeof(RichTextBox), 
              typeof(RichTextBoxToolbar), new FrameworkPropertyMetadata(null));

应该是RichTextBoxControl而不是RichTextEditControl

将包装器CLR属性重命名为RichTextEditControl

public RichTextBox RichTextEditControl
{
    get { return (RichTextBox)GetValue(RichTextEditControlProperty); }
    set { SetValue(RichTextEditControlProperty, value); }
}

注册的属性名称和包装器属性名称应始终同步。