OnStudentID没有定义

本文关键字:定义 OnStudentID | 更新日期: 2023-09-27 18:32:18

在我的主窗口中,我有一个在触发值后获取值的方法,这适用于我的用户控件,但由于某种原因,当我在我的主窗口上尝试这样做时,OnStudentIDChanged没有定义。

    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); // OnStudentIDChanged no definition?
    }

OnStudentID没有定义

也许你的意图是将d投给MainWindow而不是LoginWindow

static void OnStudentIDChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    (d as MainWindow).OnStudentIDChanged(e); 
}

但这仍然是错误的,因为它是一个无限递归(从你之前的帖子中猜测)......

我在这里做了一些假设,但我猜static void OnStudentIDChanged位于 MainWindow 中,对吧?

问题是不能使用该类型的实例调用该类型的静态方法。例如

public class MyClass
{
   public static void SomeMethod();
}
var instance = new MyClass();
(instance as MyClass).SomeMethod() //THIS WILL NOT WORK

同样,这是假设我正确理解了您的情况。

d 总是在下一行中是一个登录窗口吗?

(d as LoginWindow).OnStudentIDChanged(e);