我有以下问题,我不知道为什么我的DataBinding不起作用(我已经在我的程序中以相同的方式做了一个并且它有效)。也许它不起作用因为我通过MainWindow并转到Window2,但我的参考仅在Window2上为MainWindow设置。仍然不知道如何解决它。我的代码(抱歉不得不削减它,我希望我没有忘记任何事情,因为2个窗口超过600或700行代码)
private void btLogin_Click(object sender, RoutedEventArgs e)
{
var Window2 = new Window2();
Login USERTB= new Login(); //reference to reach the Login table and check if we can read the logged user from it
Window2.Show();
USERTB.Username = tbLoginUser.Text; //checking if it knows the username- working yet
this.Hide();
}
在此之后,问题开始了,即使我尝试使用USER引用获取它,我的mainwindow文本框的值也没有传递给第二个。这是Window2.xaml& Window2.cs:
Window2.cs:
string action;
public string Action
{
get { return this.action; }
set { this.action= value; OnPropertyChanged("Action"); }
}
private void SmthHappens(object sender, DependencyPropertyChangedEventArgs e)
{
var felh = new MainWindow();
Action= felh.USER; //in here didn't pass the MW's tb value ,so here is the problem
tbShow.Text = Action;
}
我尝试将MW的tb值传递给W2 tbShow。我想我的代码在SmthHappens上是错误的,因为我已经通过MW并且它失去了tbLoginUser的价值。但我不知道如何解决它。请帮忙!
解决了!谢谢你的答案,我解决它的方式与我尝试的方式相同。也许我稍后会检查一下MVVM,但是现在我的程序还没有多少,所以我结束了它:)
答案 0 :(得分:1)
在这些情况下,WPF中常用的MVVM模式派上用场。您应该创建一个包含要共享的属性的模型类,并将其通过视图模型传递给两个表单。
有关WPF中使用的MVVM设计模式的更多信息,请阅读this article on MSDN。
答案 1 :(得分:0)