2012-04-25 71 views
0

在我的主窗口名为(MainWindow错误)我有一个方法获取一个值,一旦它被触发,这适用于我的usercontrols,但由于某种原因,当我尝试这在我的MainWindow没有定义为OnStudentIDChanged。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? 
    } 
+1

而你的MainWindow有一个定义OnStudentIDChanged(DependencyPropertyChangedEventArgs e)? – csteinmueller 2012-04-25 15:32:05

+0

当StudentID属性更改时,您想要执行什么操作? – 2012-04-25 15:36:16

+1

请检查LoginWindow/MainWindow错别字。 – 2012-04-25 15:37:34

回答

1

也许你的意图是投dMainWindow而不是LoginWindow

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

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

+0

我认为这是一个错字。 – 2012-04-25 15:38:01

0

我在这里做一些假设,但我猜测,static void OnStudentIDChanged位于主窗口,对?

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

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);