我有一个自定义类,我已经实现了INotifyPropertyChanged
,我很乐意将它绑定到表单上TextBox的.Text
属性,并让数据双向流动。
我现在正尝试通过属性在usercontrol上使用文本框实现相同的功能:
public string MyProperty
{
get { return MyPropertyTextBox.Text; }
set { MyPropertyTextBox.Text = value; }
}
我可以将我的类绑定到Usercontrol上的MyProperty
,以便设置该值。
但是我如何得到它以便在编辑文本框时将更改反馈给我的班级?
修改
不确定我是否很好地解释了自己+它是WinForms,而不是WPF。
文本框本身没有绑定,我希望文本框的'TextChanged'事件也触发usercontrol属性的'PropertyChanged'。建立自己的概念验证测试,使其工作,然后设法在我的项目中实现它。
感谢您的建议。
答案 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直接准备好时,将直接检测到任何更改,无需额外代码