双向数据绑定到属性下的控件

时间:2013-10-04 18:58:19

标签: c# winforms

我有一个自定义类,我已经实现了INotifyPropertyChanged,我很乐意将它绑定到表单上TextBox的.Text属性,并让数据双向流动。

我现在正尝试通过属性在usercontrol上使用文本框实现相同的功能:

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

我可以将我的类绑定到Usercontrol上的MyProperty,以便设置该值。

但是我如何得到它以便在编辑文本框时将更改反馈给我的班级?

修改

不确定我是否很好地解释了自己+它是WinForms,而不是WPF。

文本框本身没有绑定,我希望文本框的'TextChanged'事件也触发usercontrol属性的'PropertyChanged'。建立自己的概念验证测试,使其工作,然后设法在我的项目中实现它。

感谢您的建议。

3 个答案:

答案 0 :(得分:3)

OnPropertyChanged方法添加到您的媒体资源中。像这样:

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

你没有在你的问题中提到XAML,但正如@RetailCoder所指出的那样,你的XAML也需要正确设置,就像Alan的回答一样。

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

答案 1 :(得分:1)

如果您希望在编辑时更新,请使用此xaml

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

答案 2 :(得分:-2)

当您从textbox.Text直接准备好时,将直接检测到任何更改,无需额外代码