2013-10-04 3 views
1

У меня есть пользовательский класс, в котором я реализовал INotifyPropertyChanged, и я могу с радостью связать это с свойством .Text TextBox на форме и иметь поток данных в обоих направлениях.Двусторонняя привязка данных к элементу управления под свойством

Я сейчас пытаюсь достичь того же с текстовым полем на UserControl, через свойство:

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

Я могу связать мой класс к MyProperty на UserControl, так что значение установлено.

Но как я могу получить его, чтобы при редактировании текстового поля изменение возвращалось обратно в мой класс?

Edit:

Не уверен, что я объяснил себя очень хорошо + это WinForms, WPF не.

Само текстовое поле не связано, я хотел, чтобы событие TextChanged в текстовом поле также вызывало свойство PropertyChanged свойства usercontrol. Построил себе доказательство концептуального теста, получил эту работу, а затем смог реализовать ее в моем проекте.

спасибо за предложения.

+0

ASP.NET, Windows Forms – 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. –

Смежные вопросы