public static readonly DependencyProperty StudentIDProperty = DependencyProperty.Register("StudentID", typeof(String), typeof(LoginWindow), new PropertyMetadata(OnStudentIDChanged));
public string StudentID
{
get { return (string)GetValue(StudentIDProperty); }
set { SetValue(StudentIDProperty, value); }
}
static void OnStudentIDChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
(d as LoginWindow).OnStudentIDChanged(e); //
}
在我的另一个窗口,我有这个:
MainWindow.StudentID = (String)((Button)sender).Tag;
但我收到错误:
An object reference is required for the non-static field, method, or property 'WpfApplication4.MainWindow.StudentID.get'
有谁知道如何解决这个问题?它适用于我的用户控件,但不适用于其他窗口?
我的主窗口实际上名为MainWindow,所以我可能对此感到困惑。
答案 0 :(得分:7)
您需要在MainWindow类的实例上设置StudentID。尝试
((MainWindow)Application.Current.MainWindow).StudentID = (String)((Button)sender).Tag;
答案 1 :(得分:1)
因为MainWindow
是您的类的名称,而不是MainWindow的实例。你需要这样的东西:
MainWindow mw = new MainWindow();
mw.StudentID = (String)((Button)sender).Tag;
答案 2 :(得分:0)
我试图从TextBox
更新MainWindow
中的UserControl
并收到错误
Error 1: An object reference is required for the non-static field, method, or property
'WpfApplication1.MainWindow.textBox1'
我通过编写以下内容解决了这个错误:
//MainWindow.textBox1.Text = ""; //Error 1
((MainWindow)Application.Current.MainWindow).textBox1.Text = "";//This is OK!
这是由Rytis I提出的