0

ここで、Sender がイベント ハンドラーで null であってはならないことを読みました ( 「 NULL を処理する最善の方法」に対するKonrad Rudolphの回答)。

ただし、私のイベント ハンドラーは、WPF XAML から null 送信者を取得します。

これは XAML です。

<Storyboard x:Name="Storyboard"  CurrentTimeInvalidated="StoryboardChanged">

メイン ウィンドウでは、これはイベント ハンドラです。

private void StoryboardChanged(object sender, EventArgs e)
{
        try
        {
            #region VerifyInputs

            Validator.Verify(sender); <------------------- aborts on null

だから、私の質問は次のとおりです 。WPF が null 以外の「送信者」値を送信するように XAML を修正するにはどうすればよいですか?

編集:Validator.Verifyの私の思慮のないコピー/貼り付けで問題を曇らせたことをお詫びします。このメソッドは、引数が null かどうかを確認するだけです。

    public static void Verify(Object theObj)
    {
        if (theObj == null)
        {
            string errMsg = "theObj is null";
            Debug.Assert(theObj != null, errMsg);
            throw new ApplicationException(errMsg);
        }
    }

編集

中止、中止、中止

ごめん。送信者が null ではありませんでした。e は

:(

4

1 に答える 1

1

問題は、 Validator クラスが送信者に期待しているものである可能性があると思います。CurrentTimeInvalidated イベント ハンドラーの場合、「送信者」は Storyboard ではなく、System.Media.Animation.Clock になります。バリデーター検証メソッドが別の何かを期待している場合、#null として扱われます。

(つまり、署名が Verify(object sender) のようなもので、実装が "sender as Storyboard" のようなことを行う場合、最終的に null 値になります。)

于 2012-09-14T00:34:10.643 に答える