2017-06-22 25 views
0

私は、Windowsフォームは次のように制御している場合:WindowsフォームコントロールがWPFウィンドウのプレビューイベントをブロックするのはなぜですか?

 System.Windows.Forms.Button button = new System.Windows.Forms.Button() 
     { 
      Width = 1000, 
      Height = 1000 
     }; 

     Host.Child = button; 

そして、私はこのようなイベントをサブスクライブ:私は私のWPFウィンドウがイベントを受け取る必要があります確かに考え

PreviewStylusDown="Window_PreviewStylusDown" 
    PreviewStylusUp="Window_PreviewStylusUp" 
    PreviewTouchDown="Window_PreviewTouchDown" 
    PreviewTouchUp="Window_PreviewTouchUp" 

。しかし、ボタンに触れたときには、イベントは発生しません。

どのようにWinformsコントロールはPreviewTouchDownのようなプレビューイベントを吸収できますか?それがプレビューであれば、それはトンネリングフェーズで提起されたことではないのですか?それはWindowsFormsHostに達する前にウィンドウがイベントを受け取るべきであるという意味ですか?ここでは何が起こっているのですか?

答えて

1
+0

から、これは直接トンネリングとプレビューイベントに対応していませんが、それはまだ問題にいくつかの光を投げかけています。 WinFormsコントロールがWPFウィンドウの子として扱われないため、トンネリング、ターゲティング、またはバブリングに参加しないため、別々のウィンドウとして扱われる場合、トンネリングは適用されません。これは、コントロールをレイヤーする方法に関係なく、コントロールがすべてのWPFコントロールの前に表示される理由についても説明しています。 –

+1

彼らはすでに2つの異なる世界のものを一緒に接着するために最善の努力をしています。 :)イベントトンネリングのコンセプトは、Winformsでも具体的なものではありません。ああ、私はWPFビジュアルツリーのルート要素からプレビューイベントが発生しない理由について質問しています。 – kennyzx

関連する問題