ツリービューアイテムのコンテキストメニューには、ツリービューアイテムのメソッドを呼び出しますか?
-
21-08-2019 - |
質問
TreeView
がTreeViewItem
として適用右クリックしてコンテキストメニューを持つように私はStyle
を設定しています。ような何かます:
<Grid.Resources>
<ContextMenu x:Key="contextMenu">
<MenuItem Header="Save" IsEnabled="{Binding Path=Saveable}"/>
<MenuItem Header="Copy" IsEnabled="{Binding Path=Copyable}"/>
<MenuItem Header="Remove" IsEnabled="{Binding Path=Removeable}"/>
</ContextMenu>
<Style TargetType="TreeViewItem">
<Setter Property="ContextMenu" Value="{StaticResource contextMenu}" />
</Style>
</Grid.Resources>
、Saveableコピー可能と取り外しはTreeViewItem
として使われているオブジェクトから来プロパティです。
ユーザーがMenuItem
をクリックしたときである私は何を探している、それは選択されたオブジェクトの適切な方法をクリックします。だから、MenuItem
を呼ぶだろう「保存」object.Save()
をクリックし、「コピー」など、object.Copy()
呼び出します。しかし、私は、構文は次のようになり、またはなるかわからないという考えが一般的なWPFのスタイルの面で実際に受け入れられるかどうか。私はちょうど網羅ウィンドウに新しいイベントハンドラを作成することができます知っているが、私はイベントを処理するために選択した項目自体を好むだろう。
思考?
ありがとうございます。
解決
残念ながら、私はこれを行うための自動化された方法はないと思います。最も近いオプションは、セットアップにRoutedUICommand
内の各アイテムのContextMenu
なり、その後、あなたのクラスのそれぞれについて、CommandBinding
を作成します。あなたがそれらをTreeViewItem
に行きたい場合は、おそらくTreeViewItem
をサブクラス化し、そこにCommandBindings
を設定する必要があります。
私はうまくいくかもしれないと思った一つの選択肢は、EventSetter
スタイルにMenuItem.Click
ためTreeViewItem
を追加することです。しかし、それは動作しませんでした - おそらくContextMenu
内の項目がTreeViewItems
異なるビジュアルツリーにあるため、