0

タブ コントロール内に複数のタブがある非常に複雑なビューがあります。1 つのタブには、装飾層を持つコントロールがあります。マウス入力をキャプチャするために、MouseLeftButtonDown イベント ハンドラーで CaptureMouse を呼び出す装飾層。すべて正常に動作します。

しかし、特定の順序でビューのタブを切り替えてから装飾層をクリックすると、マウス入力のキャプチャに失敗します: CaptureMouse() は false を返します。同時に Mouse.Captured は null を返します。装飾層をホストするコントロールは引き続き正常に動作し、マウスをキャプチャすることさえできます。

多くのカスタム コントロールが動作しているため、コードを提供できません。単純化されたレイアウトでは、すべてが正常に機能します。

CaptureMouse が失敗する理由を教えてください。

4

2 に答える 2

5

がまたは であり、でIInputElementある必要があります。UIElementUIElement3DIsVisibleIsEnabledtrue

IInputElementが である場合ContentElement、存在しないIsVisibleので、 であるIsEnabled必要がありますtrue。これはもちろんあなたが電話したときですMouse.Capture。また、PresentationSourceIInputElement含むビジュアルにはIMouseInputProvider.

ここでの問題は、別の要素がすぐにキャプチャIsVisibleされるかfalse、呼び出したときにCapture.

于 2012-11-18T18:58:59.337 に答える
2

MouseLeftButtonUp イベント ハンドラーで ReleaseMouseCapture() を呼び出していることを確認してください。そうしないと、元の adornerlayer がそれを保持します。

また、チェーンのさらに上にマウスをキャプチャしているコントロールがないことを確認してください (それを防ぐために、アドナー レイヤーでハンドルを true に設定できます)。

編集: IsEnabled が true であることも確認してください。

于 2012-07-31T22:40:41.210 に答える