1

WPF パネルは、IInputElement インターフェイスからのイベントをサポートします (ほとんどのマウス イベントはここで宣言されます)。

パネルで MouseEnter または MouseMove を実行すると、パネルスペース全体ではなく、そのパネルから childcpntrol にカーソルを合わせたときにのみイベントが実行されます。

例: テキストブロック (WPF のラベル)、テキストボックス、およびボタンを含む Stackpanel (方向 = 水平)。ボタンには 5 のマージンがあります。Stackpanel には、MouseEnter および MouseLeave ハンドラーがあります。これらのイベントが発生すると、テキストブロックとテキストボックスにテキストが設定されます (例: 'Stackpanel enter' と 'Stackpanel left')。テキストブロックのテキストが更新され、テキストボックスのテキストが追加されます。

左から右 (テキストブロックからボタン) にスタックパネルに移動すると、テキストボックス内のテキストが次のようになることがわかります。

MouseLeave イベントが発生します。これは、テキストボックスとボタンの間の空白 (覚えていればボタンの余白) のためです。

私の質問は、同じ状況と条件で MouseLeave イベントが発生しないようにするには、スタックパネルで何を変更する必要があるかということです。

言い換えれば、スタックパネルのすべてのスペースが「イベントゾーン」になるように、MouseEnter と MouseLeave イベントをその子ではなく Stackpanel 自体にリンクするにはどうすればよいでしょうか?

4

1 に答える 1

4

答えは背景色に関係しているようです。プレゼンテーション コアは、空白が Stackpanel の親 (または親の 1 つ) に属していると想定します。

良い解決策: デフォルトの背景をオーバーライドするか、背景を設定します。これは「透明」です (RGB: 0 255 255 255、16 進数: #00FFFFFF)。値の透明度を下げる必要があります (RGB: 1 255 255 255、16 進数: #01FFFFFF)。

于 2012-10-09T08:24:38.363 に答える