UI上にドロップアクションをとるグリッド/パネルがあります。コントロールは、動的に作成されたコンテンツを含むグリッドです(重要な場合は、枠線のスタックパネルを含むビューボックス)。IsMouseOverとDragLeaveが正常に動作しません
関連する情報をグリッドにドラッグすると、内部コンテンツを変更(再生成)したいときにドロップしたり離したりすると、通常の状態に戻る必要があります。私は 'それを変更する'と 'それを戻す'メソッドは正常に動作しているが、私はそれらを呼び出すときに決定するのに問題があります。
グリッドにドラッグイベントをドラッグしてドラッグしました。入り口は素晴らしいですが、休暇はありません。グリッド内のコンテンツの上にマウスが移動すると、マウスがドラッグ離脱イベントを発生すると、コンテンツが変更されます(子供のコンテンツから戻すと、ドラッグすると再びドラッグして点滅します) 。
私の最初の考えは、マウスが実際にまだグリッド上にあるかどうかを判断して、コンテンツを戻さずにちょうど取り除くことでした。しかし、これは動作していないようです。ここでは、ドラッグ休暇のための私のコードは次のとおりです。
private void Grid_DragLeave(object sender, DragEventArgs e)
{
var wizard = DataContext as WizardVM;
var gd = sender as Grid;
if (wizard == null || gd == null || gd.IsMouseOver ||
gd.Children.Cast<FrameworkElement>().Any(x => x.IsMouseOver)) return;
wizard.Assembly.CollapsePreview();
}
あなたが見ることができるように、私も、グリッドの子を反復処理し、上にマウスがそれらと出て捨てるのいずれにも真であるかどうかを確認するために試みたが、まだそれだけで続けてそのすべてに対して偽を返し、崩壊する。私はIsMouseOverが、たとえそれがコントロールの子供であっても、マウスがまったく終わったかどうかを教えてくれると思っていたと思っていました...
Winforms、WPF、ASP ..は何をターゲットにしていますか? __Always__質問に間違いをしないでください! – TaW
IsMouseOverはtrueになりません。通常のマウス操作は、D + D操作の進行中に中断されます。どのように誰かがこのスニペットから代替案を提案できるか見えにくい。 –
申し訳ありません、それはWPFです。だからハンスは、マウスがグリッドの境界にあるかどうかを知る方法がないと言っているのですか? – sfaust