2

<Grid x:Name="LayoutRoot" Background="White">
    <sdk:TreeView MouseLeftButtonDown="TreeView_MouseLeftButtonDown">
        <sdk:TreeViewItem Header="this is first item"/>
    </sdk:TreeView>
</Grid>


呼び出しが TreeView_MouseLeftButtonDown イベント ハンドラに来ていません。アイデアや回避策はありますか?

4

2 に答える 2

1

Silverlight ボタンがクリックされたときに、MouseLeftButtonDown イベントと MouseLeftButtonUp イベントが発生しないことに気付きましたか? これは、ボタンが OnMouseLeftButtonDown および OnMouseLeftButtonUp ハンドラーをオーバーライドすることによって、これら 2 つのイベント自体を処理するためです。OnMouseLeftButtonDown オーバーライドでは、Click イベントが発生し、MouseLeftButtonDown イベントが処理済みとしてマークされるため、ビジュアル ツリーでバブリングできません。OnMouseLeftButtonUp オーバーライドも、MouseLeftButtonUp を処理済みとしてマークします。

これは、Button コントロールの ClickMode プロパティを使用して変更できます。次の値があります - Hover、Press、Release。デフォルトは Pressed で、すでに説明しました。ClickMode を Release に設定すると、OnMouseLeftButtonUp オーバーライドで Click イベントが発生し、MouseLeftButtonDown および MouseLeftButtonUp イベントがボタン内で再び処理されます。ClickMode を Hover に設定すると、Click イベントが MouseEnter イベントで発生し、マウス ボタン イベントも使用できるようになります。

于 2013-02-14T05:08:53.960 に答える