0

Silverlights DataGrid を使用しているときに、非常に奇妙なマウス イベントの動作が発生しています。

私がやりたいことは、ユーザーが DataGrid を左クリックしたときに何らかのメソッドを呼び出すことです。それはそれほど問題ではないはずですが...

public void doLeftClick (object sender, MouseButtonEventArgs e) {
    // some code
}

私は EventHandler を定義しています

myDataGrid.MouseLeftButtonDown += doLeftClick;

イベントに付けています。

その結果、doLeftClick メソッドは、DataGrid の列の 1 つを左クリックしたときにのみ呼び出されます。

左クリックではなく右クリックに対してのみ上記とまったく同じコードを実行しているとき、マウスカーソルがどこにあるかに関係なく、DataGrid を右クリックするたびに EventHandler が呼び出されます。コントロール(これは、左クリックで実際に必要なものであり、この設定から期待される動作は何ですか):

public void doRightClick (object sender, MouseButtonEventArgs e) {
    // some code
}

myDatagrid.MouseRightButtonDown += doRightClick;

それで、私は何を間違っていますか?私は何を忘れていますか?私は本当に助けていただければ幸いです:)

マルク

4

1 に答える 1

1

クリックイベントはバブルアップされません。子コントロールがイベントを処理済みとしてマークすると、停止します。

この例では、左クリックがDataGridセルによって消費されています(セルを選択したり、コントロールの編集にフォーカスを与えるため)。

セルは右クリックを同じように使用しないため、DataGridコントロールまで伝播します。

列ヘッダーは、左クリックが伝播できるようにするのに十分です。

于 2011-09-15T14:06:48.040 に答える