0

itemsource が Model クラスのコレクションである treeView があります。treeView にコンテキスト メニューを追加しました。contextMenu のコマンドはビジュアル ツリーにある必要があるため、Model クラスに配置する必要がありました。どちらが間違っていますか (モデルへのディレクトリのバインド)。

コンテキスト メニューのコマンドをモデルではなく ViewModel にバインドするにはどうすればよいですか?

ありがとう

4

1 に答える 1

5

コマンドをモデルに配置する必要はありません。ここでは、以下のように ViewModel のコマンドにアクセスできます。ここTagには、ViewModel へのバインドが含まれており、コマンドへのアクセスに使用できます。

    <TreeView Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
      <TreeView.ContextMenu>
        <ContextMenu>
            <MenuItem Header="MyCommand" 
                     CommandParameter="{Binding }"
                     Command="{Binding Path=PlacementTarget.Tag.DataContext.MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
        </ContextMenu>
      </TreeView.ContextMenu>
    </TreeView>
于 2013-09-17T04:38:08.063 に答える