0

私はWPFで作業しています。私のビジュアル ツリー階層は次のとおりです。 RadDiagram > RadDiagramShape > MyControl RadDiagramShape のコンテンツは mycontrol です。

myControl クラスでは、(MouseLeftButtonDown) イベントを処理しました。その中にドラッグ アンド ドロップ コードを配置しました (別の場所で必要です)。つまり、トンネリングやバブリングではなく、ダイレクト イベントです。

RadDiagramShape のコンテンツであるカスタム コントロールを移動している間、RadDiagram で移動しません (ドラッグしようとしています)。これは、MouseLeftButtonDown が MyControl 内で処理されているためです。 これにより、イベントがビジュアル ツリーにバブリングするのを防ぎ、親ハンドラーにイベントが通知されるのを防ぎます。

RadDiagramShape と RadDiagram のイベントを as として処理しようとしましたが、e.Handled = true; MouseLeftButtonDown であり、ルート要素内で処理されるため、何もしませんでした。バブルやトンネルは発生せず、移動コードをオーバーライドしませんでした。上書きしたくない。以前に試してみたのですが、組み込みの WPF と同じわずかな動きが得られなかったからです。

ルート要素で MouseLeftButtonDown イベントをブロックし、コンテナ (親) レベルでイベントを発生させるにはどうすればよいですか?

4

2 に答える 2

1

「OriginalSource」が必要なコントロールと同じかどうかをコントロール ハンドラーで確認してください。

if ((e.OriginalSource is TextBox) && (e.OriginalSource as TextBox).Name == "TextBoxName")
            {
                //Do every thing you want            
            }

于 2014-12-04T10:58:01.913 に答える