2014-05-09 38 views
0

我在Silver light Project中有一個自定義用戶控件。將文本框從頁面傳遞到使用dependencyProperty的自定義用戶控件

我在其他頁面中使用它,並希望將文本框傳遞給自定義用戶控件。

爲此,我如下創建dependcy:

public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("TextBoxControl", typeof(TextBox), typeof(SpellCheck), new PropertyMetadata(false)); 
    public TextBox TextBoxControl 
    { 
     get { return (TextBox)GetValue(MyPropertyProperty); } 
     set 
     { 
      SetValue(MyPropertyProperty, value); 
      TextSpell = value; 
     } 
    } 

這裏TextSpell是一個文本框。

而且我在一個銀色的光如下頁面使用該屬性:

<TextBox x:Name="txtNote" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Stretch" Width="400"/> 
<myButton:SpellCheck x:Name="btnSpell" Grid.Row="3" TextBoxControl="txtNote" Grid.Column="1" Width="20" Height="20" Margin="403,0,0,0" HorizontalAlignment="Left"/> 

但我得到S-我一個錯誤:

所以「Typeconvertor爲Texbox劑量不支持從字符串轉換」我如何通過自定義用戶控件中的文本框。

感謝, 亞太區首席技術官Matt

回答

1

你不能簡單地使用字段名(x:Name)文本框爲您TextBoxControl屬性的值的字符串。相反,你可以使用ElementName這樣的結合:

<myButton:SpellCheck TextBoxControl="{Binding ElementName=txtNote}" ... /> 

與錯還有更多的事情:

  • 在依賴屬性的CLR包裝,你永遠不應該叫什麼比別的GetValueSetValue。解釋在MSDN上的XAML Loading and Dependency Properties文章中給出。相反,你必須有一個PropertyChangedCallback註冊屬性元數據。

  • 靜態依賴項屬性字段有一個命名約定。他們應該被命名爲財產,尾隨財產

  • 默認值必須與屬性類型匹配。您的false值無效,可能是null。但是,無論如何,這是默認的,你應該完全拋棄它。

聲明現在看起來是這樣的:

public static readonly DependencyProperty TextBoxControlProperty = 
    DependencyProperty.Register(
     "TextBoxControl", typeof(TextBox), typeof(SpellCheck), 
     new PropertyMetadata(TextBoxControlPropertyChanged)); 

public TextBox TextBoxControl 
{ 
    get { return (TextBox)GetValue(TextBoxControlProperty); } 
    set { SetValue(TextBoxControlProperty, value); } 
} 

private static void TextBoxControlPropertyChanged(
    DependencyObject obj, DependencyPropertyChangedEventArgs e) 
{ 
    var spellCheck = (SpellCheck)obj; 
    spellCheck.TextSpell = (TextBox)e.NewValue; 
} 
+0

嗨,克萊門斯感謝您的回覆,但因此給了錯誤的spellCheck.TextSpell =價值,我不能在TextBoxControlPropertyChanged事件訪問值。 – Hitesh

+0

對不起,這是代碼示例中的複製和粘貼錯誤。請參閱我的編輯。 – Clemens

+0

現在感謝它的工作正常 – Hitesh

相關問題