在wpf中使用依赖属性进行数据绑定

在wpf中使用依赖属性进行数据绑定,wpf,data-binding,Wpf,Data Binding,我有两个窗口w1和w2,每个窗口都有一个文本框,w1中txtbox1中的数据需要出现在w2 txtbox中。如何使用依赖属性实现这一点我建议您为两个窗口使用公共数据上下文,而不是将它们相互绑定。作为一个示例,假设您将此类作为数据模型: public class MyDataModel : INotifyPropertyChanged { private string text; public string Text { get { return text; }

我有两个窗口w1和w2,每个窗口都有一个文本框,w1中txtbox1中的数据需要出现在w2 txtbox中。如何使用依赖属性实现这一点我建议您为两个窗口使用公共数据上下文,而不是将它们相互绑定。作为一个示例,假设您将此类作为数据模型:

public class MyDataModel : INotifyPropertyChanged
{
    private string text;

    public string Text {
        get { return text; }
        set {
            text = value;
            RaisePropertyChanged("Text");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string propertyName) {
        var handler = PropertyChanged;
        if (handler != null) {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
然后,您可以在windows上将其设置为DataContext:

MyDataModel model = new MyDataModel();
model.Text = "Hello World";

MyWindow a = new MyWindow();
MyOtherWindow b = new MyOtherWindow();
a.DataContext = model;
b.DataContext = model;
如果已执行此操作,则可以将每个窗口中文本框的Text属性设置为如下绑定:

<TextBox Text="{Binding Text}"/>


如果您将model.Text设置为另一个值,这两个文本框将自动更新。

是否有两个表单的母亲?一个能同时创建这两个的表单

在这种情况下,由于我正在实现
INotifyOnPropertyChanged
,我通常要做的是在母亲中订阅w1的
PropertyChanged
事件,获取值,然后将其放入w2的属性中

我不会真正使用依赖属性

我知道它并不漂亮,但我通常更喜欢它,因为我喜欢保持1视图模型到1视图的关系。我的老板认为这样更容易阅读和理解