2014-03-07 68 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