C# 双向数据绑定到属性下的控件
我有一个自定义类,我在其中实现了C# 双向数据绑定到属性下的控件,c#,winforms,C#,Winforms,我有一个自定义类,我在其中实现了INotifyPropertyChanged,我可以很高兴地将它绑定到表单上文本框的.Text属性,并使数据流双向流动 我现在正试图通过一个属性,通过usercontrol上的文本框实现同样的功能: public string MyProperty { get { return MyPropertyTextBox.Text; } set { MyPropertyTextBox.Text = value; } } 我可以将类绑定到Usercontr
INotifyPropertyChanged
,我可以很高兴地将它绑定到表单上文本框的.Text
属性,并使数据流双向流动
我现在正试图通过一个属性,通过usercontrol上的文本框实现同样的功能:
public string MyProperty
{
get { return MyPropertyTextBox.Text; }
set { MyPropertyTextBox.Text = value; }
}
我可以将类绑定到Usercontrol上的MyProperty
,以便设置值
但是,我如何获得它,以便在编辑文本框时,将更改反馈给我的类
编辑:
不确定我是否解释得很好+这是WinForms,不是WPF
文本框本身没有绑定,我希望文本框的“TextChanged”事件也触发usercontrol属性的“PropertyChanged”。我自己做了一个概念验证测试,让它工作起来,然后在我的项目中实现了它
不过,感谢您的建议。当您从textbox直接准备就绪时。Text,将直接检测到任何更改,无需额外代码。将
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}"
如果希望在编辑时更新,请使用此xaml
<TextBox Text="{Binding myproperty,UpdateSourceTrigger=PropertyChanged}"
ASP.NET,Windows forms+1,但这必须与实际使用INotifyPropertyChanged实现结合起来,正如paqogomez的回答所提到的那样。+1但如果在编辑文本时需要传播更改,则必须与Alan的回答结合起来。否则,我相信只有当文本框失去焦点时才会发生变化。