ツリービューアイテムのコンテキストメニューには、ツリービューアイテムのメソッドを呼び出しますか?

StackOverflow https://stackoverflow.com/questions/858843

質問

TreeViewTreeViewItemとして適用右クリックしてコンテキストメニューを持つように

私は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異なるビジュアルツリーにあるため、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top