【发布时间】:2012-04-25 16:21:36
【问题描述】:
在我的 wpf 应用程序中尝试将字符串从一个窗口发送到另一个窗口时出现错误:
无法将“WpfApplication4.LoginWindow”类型的对象转换为“WpfApplication4.MainWindow”类型。
在我的登录窗口中,错误出现在这一行:
((MainWindow)Application.Current.MainWindow).StudentID = UserAuthenticationID;
在我的主窗口中,我有这个要测试:
public string StudentId { get; set; }
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
label1.Content = StudentID;
}
我做错了什么?
编辑:
到目前为止,没有任何答案是有意义的,这将是由于我的模糊问题,我创建了一个 wpf 应用程序,并且我有两个窗口 MainWindow.xaml 和 LoginWindow.xaml。
我想在身份验证后将一个字符串(学生 ID)从登录窗口传递到主窗口。
当我阅读它时,我认为上述方法是如何做到的:((MainWindow)Application.Current.MainWindow).StudentID 表示我打算将字符串 UserAuthenticationID 发送到哪里?
然后在MainWindow.xaml 中我得到字符串UserAuthenticationID 并设置它,然后我将标签内容分配给这个公共字符串?
【问题讨论】:
-
您的属性看起来很奇怪。为什么在其访问器中调用相同的属性名称?为什么要在 setter 中分配给
value而不是相反? -
嗯...
get属性不会导致递归循环并最终导致堆栈溢出吗? -
我读它的方式是我试图从登录窗口“获取”StudentID,然后设置它的值?
-
我认为我的第二个答案(“看起来像...”)为您提供了最明显/最标准的方式来做您想做的事。
-
请修复您设置的属性,即:public string StudentId { get;放; }