1

親コントロールから子コントロールへのトンネル ルーティング イベント トンネリングの簡単な例が必要です。

(これは実際のコードではありません) -- 実際、深く掘り下げるほど、XAML が間違っていると思います -- おそらく、子ノードの XAML でトンネル化されたイベントにサインアップするべきではありません (わかりませんか?)

<PARENT>    
   <MyControl DoSomethingOnUserAction="raiseTunnelEvent"> HELP </MyControl >    
   <CHILD> I SHOULD HANDLE tunnelled event </CHILD> 
</PARENT>

シンプルで簡潔な例が役に立ちます。

ありがとう、アラン

4

2 に答える 2

3

確かではありませんが、猫に吠えさせたいと思っているかもしれません。

(PresentationFramework からの) Button の RoutedEvent ClickEvent は、次のように宣言されます。

public static readonly RoutedEvent ClickEvent = 
    EventManager.RegisterRoutedEvent("Click", 
    RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof
    (ButtonBase));

readonly RoutingStrategyのに注意してくださいBubble

以下は、Tunnel、Bubble、および Direct を理解するのに役立つ場合があります: msdn.microsoft.com/en-us/library/system.windows.routingstrategy.aspx

msdn.microsoft.com/en-us/magazine/cc785480.aspx を参照してください。

ヒント: 慣例により、WPF のトンネリング イベントは "Preview" で始まります (例: "PreviewExplode")。イベントが "Preview" で始まらない場合、おそらくトンネル RoutingStrategy は使用されません。また、通常は Tunnel と「PreviewExplode」に続いて「Explode」のように、最初にトンネルが発射され、次にバブルが発射されたバブルとペアになっています。

ボタンのクリック トンネルが必要な場合は、

  1. PreviewMouseDown を使用します (もちろん同じではなく、すべてのマウスダウンがクリックになるわけではないため、おそらく危険です)。
  2. PreviewClick を発生させてから Click を発生させる TunnelButton を作成します。
于 2009-08-20T19:43:30.653 に答える
2

149ページの「VisualStudio2008でWPFを実行している」という本には、RoutedEventsが親ノードで発生し、ルーティングされたイベントが子ノードにトンネリングされることを示しているように見える非常に誤解を招く図があります。

それは事実ではないことが判明しました...悪い図の半日吹き飛ばされたb/c(そうでなければかなり良い本)[ISBN:1-933988-22-3]

于 2009-08-20T20:46:03.287 に答える