我有2个窗口w1和w2,每个窗口有一个文本框,而w1中的txtbox1中的数据需要出现在w2 txtbox中。如何使用依赖属性实现此目的
答案 0 :(得分:0)
我建议您为两个窗口使用通用的DataContext,而不是将它们绑定到彼此。举个例子,我们假设您将此类作为DataModel:
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;
如果你这样做了,可以将每个窗口中TextBoxes的Text属性设置为Binding,如下所示:
<TextBox Text="{Binding Text}"/>
如果将model.Text设置为其他值,则两个文本框现在都将自动更新。
答案 1 :(得分:0)
有两种形式的母亲吗?创造两者的形式?
在这种情况下我通常会这样做,因为无论如何我都在实现INotifyOnPropertyChanged
,在母亲中我订阅了w1的PropertyChanged
事件,获取了值,然后将它放在属性中w2。
我不会真正使用依赖属性
我知道它不漂亮,但我通常更喜欢它,因为我喜欢将1视图模型保持为1个视图关系。我的老板认为这样更容易阅读和理解。