OnStudentIDChanged没有定义

时间:2012-04-25 15:27:09

标签: c# wpf dependency-properties

在我的主窗口中(错误地指向MainWindow)我有一个方法可以在触发后获取值,这适用于我的用户控件,但出于某种原因,当我在MainWindow上尝试这个时,没有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?
    }

2 个答案:

答案 0 :(得分:1)

也许您打算将d投放到MainWindow而不是LoginWindow

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

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

答案 1 :(得分:0)

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

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

public class MyClass
{
   public static void SomeMethod();
}

var instance = new MyClass();
(instance as MyClass).SomeMethod() //THIS WILL NOT WORK

同样,这是假设我正确理解你的情景。

d 总是 LoginWindow 在以下行中?

(d as LoginWindow).OnStudentIDChanged(e);