私はアプリケーションからタブ項目をドラッグできるタブコントロールがあります。
このドラッグにより、マウスの左ボタンを離すまで、マウスの次のウィンドウが開きます。
また、タブ項目を元のタブコントロールにドラッグして元の親またはドラッグしたデータを理解できる他のコントロールに再接続することもできます。ドラッグアンドドロップ操作中にhitTestトラフをコントロールに渡す方法
private static void DragOutTabControl_PreviewQueryContinueDrag(object sender, QueryContinueDragEventArgs e)
{
e.Handled = true;
if (DragControlIsHit)
{
if (_previewWindow != null && _previewWindow.IsVisible)
{
_previewWindow.Clear();
_previewWindow.Hide();
}
}
else
{
if (_previewWindow == null)
{
_previewWindow = new PreviewWindow();
_previewWindow.SetData();
}
_previewWindow.Left = CursorPos.X - 15;
_previewWindow.Top = CursorPos.Y - 15;
_previewWindow.Show();
}
}
私が今問題にしているのは、プレビューウィンドウがマウスの後にくると、カーソルのすぐ下に位置するということです。
この方法では、ウィンドウがヒットテストをブロックしているため、ソースタブコントロールのdragEnterおよびdragOverイベントが発生しません。
ウィンドウ内でIsHitTestVisibleをfalseに設定したとしても、ドラッグの&ドロップがまだアクティブな間にヒットテストがブロックされます。
IsEnabledをfalseに設定し、背景をnullに変更しても効果はありません。
public PreviewWindow()
{
Background = null;
IsEnabled = false;
IsHitTestVisible = false;
}
任意のヒットテストからプレビューウィンドウを非表示にするか、視覚的にドラッグウィンドウの背後にある任意のコントロールに手動でヒットテストに合格するために、任意の可能性はありますか?
編集:私の問題の詳細:
タブコントロールをタブコントロールからドラッグして新しいウィンドウを開くだけでなく、追加のタブアイテムをドラッグして既存のドラッグアウトウィンドウ。
さらに、タブ項目を元のタブコントロールにドラッグしてドラッグすることも可能です。
このすべては、プレビューウィンドウをドラッグしてドロップすることができないという唯一の問題を除いて、非常にうまく動作します&ドロップヒットテスト。
まずはお返事ありがとうございます。 それは私の考えをサポートしていますが、ドラッグ&ドロップを他のソースから処理できなければならないので、DragDropEventsの代わりに通常のMouseEventsを使いたくありません。 – lukas
また、私はadornerに試してみましたが、私はマウスボタンを離すとウィンドウが作成されなければならないのが好きではありません。 – lukas