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

本文关键字:控件 属性 数据绑定 | 更新日期: 2023-09-27 18:33:54

我有一个自定义类,我已经在其中实现了INotifyPropertyChanged,我可以愉快地将其绑定到窗体上 TextBox 的 .Text 属性,并让数据流向两种方式。

我现在正在尝试通过属性在用户控件上使用文本框实现同样的事情:

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

我可以将我的类绑定到用户控件上的MyProperty,以便设置值。

但是,我如何获取它,以便在编辑文本框时将更改反馈给我的类?

编辑:

不确定我解释得很好+它是WinForms,而不是WPF。

文本框

本身没有绑定,我希望文本框的"文本更改"事件也触发用户控件属性的"属性已更改"。为自己构建了一个概念验证测试,让它工作,然后设法在我的项目中实施它。

不过感谢您的建议。

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

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}" 

,而你直接从文本框准备好了。文本,任何更改都将被直接检测,无需额外代码