你不希望你的Window
S,UserControl
秒或View
S IN MVVM术语“知道”对方,所以你有两个选择......
- 大家的意见共享相同的
DataContext
这是他们的ViewModel
和两个TextBox
es被绑定到该ViewModel
(该ViewModel
将不得不支持更改通知)相同的公共属性。
- 你
View
■找两个不同的DataContext
S(ViewModel
S),并使用短信发送两个公共性质的两种TextBox
ES必将来回的值...
这里是2看起来像使用MVVM框架之一...
视图1:
DataContext="{Binding ViewModel1, Source={StaticResource Locator}}"
...
Textbox x:name="TextBox1" Text="{Binding MyString1}"
视图模型1:
private string myString1;
public string MyString1
{
get { return myString1; }
set
{
myString1 = value;
NotifyPropertyChanged(m => m.MyString1);
SendMessage(MessageTokens.MyString1, new NotificationEventArgs<string>
("Message", myString1));
}
}
查看2:
DataContext="{Binding ViewModel2, Source={StaticResource Locator}}"
...
Textbox x:name="TextBox2" Text="{Binding MyString2}"
视图模型2:
RegisterToReceiveMessages<string>(MessageTokens.MyString1,
(s, ea) => MyString2 = ea.Data);
...
private string myString2;
public string MyString2
{
get { return myString2; }
set
{
myString2 = value;
NotifyPropertyChanged(m => m.MyString2);
}
}
考虑学习MVVM和声明式数据绑定在WPF查看模型对象。您的文本框不应该直接访问对方 - 相反,它们可以是数据绑定到同一个变量(并且更改将在框架级自动反映)。 –
谢谢!我理解将它们绑定到一个变量的想法,但是在最基本的层面上我找不到这种简单的例子。我希望只用两个文本框,这可能很简单,足以唤起一个答案,向我解释这个概念。 –
Dean的答案似乎是正确的。您可能想要查看介绍wpf的Channel9视频。相信我,您真的很想将您的演示文稿稍后与业务逻辑层分开,并在视图模型中有单独的变量。这对于你理解WPF是非常重要的,即使需要几个小时的时间来学习你将要学习的东西,而不是构建它,从长远来看,你的生活会变得更好。 –