0

在我的主窗口(错误的 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?
    }
4

2 回答 2

1

也许您的意图是投射dtoMainWindow而不是LoginWindow?

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

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

于 2012-04-25T15:33:39.423 回答
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); 
于 2012-04-25T15:41:53.850 回答