2011-10-20 41 views
0

カスタムルーティングイベントを試していますが、Attached Event HandlerでコンパイルするとTargetInvocationExceptionが発生します。WPFでカスタムRoutedEventを使用すると、TargetInvocationExceptionが発生する

私はカスタムコントロールEventRaiserControl内の次のコードを持っている:

public static readonly RoutedEvent KickedEvent = EventManager.RegisterRoutedEvent("KickedEvent", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(EventRaiserControl)); 

public event RoutedEventHandler Kicked 
{ 
    add 
    { this.AddHandler(KickedEvent, value); } 

    remove 
    { this.RemoveHandler(KickedEvent, value); } 
} 

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    RaiseEvent(new RoutedEventArgs(KickedEvent)); 
} 

私はその後、私のメインウィンドウで、次のXAMLを持っている:背後にあるメイン・ウィンドウのコードで以下のハンドラで

<StackPanel local:EventRaiserControl.Kicked="StackPanel_Kicked"> 
    <local:EventRaiserControl Kicked="EventRaiserControl_Kicked"/> 
</StackPanel> 

私のコードはこのハンドラでうまくいきます:

<local:EventRaiserControl Kicked="EventRaiserControl_Kicked"/> 

しかしTargetInvocationExceptionで、私は付属のハンドラを追加瞬間失敗:

<StackPanel local:EventRaiserControl.Kicked="StackPanel_Kicked"> 

を誰かが助けることはできますか?私は何が見当たりませんか?

感謝

+1

EventManager.RegisterRoutedEvent("KickedEvent".... 

を変更 'TargetInvocationException'セットの' InnerException'ですか?通常、 'TargetInvocationException'は実際の問題をラップします。 – CodeNaked

+0

私の謝罪は、@コードネイキッド、あなたは正しいです。 'InnerException'は"オブジェクト参照がオブジェクトのインスタンスに設定されていません "です。 –

答えて

1

それがなぜ最初に私は驚きましたが、私はあなたのコードのようにコーディングした後にその理由を見ました。ただ、

EventManager.RegisterRoutedEvent("Kicked".... 
+0

ありがとう、それはまさにそれでした。私はしばしば、このような種類のWPFエラーをデバッグするのに苦労します。コードがコンパイルされることが多く、実行時エラーがめったに問題になりません。あなたは、コードを見てエラーjsutを見つけましたか、または何らかの方法でランタイムエラーがあなたに導かれましたか? –

+0

ああ、例外メッセージをチェックするよりも良い方法はありません。良いアイデアを与えないと申し訳ありません。これは私にとっても非常に難しいものでした。 –

関連する問題