2014-03-07 94 views
0

我创建了一个与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的名称。

但得到以下错误:

A 'Binding' cannot be set on the 'RichTextBoxControl' property of type 'RichTextBoxToolbar'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject. C:\Users\stefan.CORP\Documents\Visual Studio

任何想法?

回答

0

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

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

应该RichTextBoxControl而不是RichTextEditControl

OR

重命名包装CLR属性来命名RichTextEditControl

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

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

+1

Doh ...我的坏。谢啦! – Vincent

+1

会这样做,但不得不等待4分钟,现在1分钟:) – Vincent