5

WPF のイベントに問題があります。基になるデータ モデルと、データを表示するためのツリー ビューがあるとします。私がやりたい最も簡単なことは、1 つの項目をクリックすると、その項目に関連付けられた基になるデータで何かを行うことです。

MouseLeftButtonDownのイベントを使用してみましTextblockたが、送信者オブジェクトはTextblockそれ自体であり、基になるデータにアクセスできません。

今、私もこのようなMouseLeftButtonDownイベントを使ってみTreeViewItemました:

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
         <EventSetter Event="MouseLeftButtonDown" Handler="itemClicked"/>
    </Style>
</TreeView.ItemContainerStyle>

しかし、ハンドラーが呼び出されませんでした。

では、これをどのように正確に行う必要がありますか?ある種の標準的なアプローチはありますか?

4

1 に答える 1

7

MouseLeftButtonDown イベントはバブリング イベントであり、セレクターのルートのどこかで処理されます。snoop を使用して、誰がイベントを処理したかを確認できます。PreviewMouseLeftButtonDown/SelectedItemChanged またはあなたの場合は MouseDoubleClick を使用すると問題が解決します。

<TreeView>
  <TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <EventSetter Event="MouseDoubleClick"
                Handler="itemDoubleClicked"/>
    </Style>
  </TreeView.ItemContainerStyle>
</TreeView>
于 2013-05-16T15:18:47.913 に答える