0

(誤って MainWindow) という名前のメイン ウィンドウには、トリガーされた値を取得するメソッドがあります。

    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

おそらくあなたの意図は?の代わりにキャストdすることでしたか?MainWindowLoginWindow

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 に答える