2013-10-04 84 views
1

我有一個自定義類,我已經在其中實現了INotifyPropertyChanged,我可以愉快地將它綁定到表單上的TextBox的.Text屬性,並使數據流成雙向。雙向數據綁定到屬性下的控件

我現在努力實現與一個UserControl一個文本框同樣的事情,通過屬性:

public string MyProperty 
{ 
    get { return MyPropertyTextBox.Text; } 
    set { MyPropertyTextBox.Text = value; } 
} 

我可以使該值設置我的類綁定到MyProperty上的用戶控件。

但是,如何獲取它,以便在編輯文本框時將更改反饋給我的課程?

編輯:

不知道我解釋自己很好+它的WinForms,WPF沒有。

文本框本身沒有綁定,我希望TextBox的'TextChanged'事件也觸發usercontrol屬性的'PropertyChanged'。爲自己構建了一個概念驗證測試,得到了這個工作,然後設法在我的項目中實現它。

感謝您的建議,但。

+0

ASP.NET,Windows窗體 – Satpal

+0

看起來像WPF ... –

回答

-2

而你是textbox.Text直接準備好了,任何變化都會直接檢測不需要額外的代碼

3

添加OnPropertyChanged方法你的財產。事情是這樣的:

private string _myPropertyText; 
public string MyProperty 
{  
    get { return _myPropertyText; } 
    set { 
     if(_myPropertyText != value) 
     { 
      _myPropertyText = value; 
      OnPropertyChanged("MyPropertyTextBox"); 
     } 
     } 
} 

你沒有提到XAML在你的問題,但作爲@RetailCoder注意到,您的XAML需要適當地設定爲好,像阿蘭的回答。

<TextBox Text="{Binding myProperty,UpdateSourceTrigger=PropertyChanged}" 
+0

+1,但這必須是在與艾倫的結合回答是否需要傳播更改*正在編輯文本*。否則,我相信只有當文本框失去焦點時纔會發生更改。 –

1

如果你想它來更新編輯時,使用XAML

<TextBox Text="{Binding myproperty,UpdateSourceTrigger=PropertyChanged}" 
+0

+1,但這必須與INotifyPropertyChanged實現做一些事情,正如paqogomez的回答所提到的。 –