0

ContextMenuを備えたTreeViewがあり、そのメニュー内でVIewModelのコマンドにバインドしたい

<TreeView x:Name="treeView"
          ItemTemplate="{StaticResource ItemTemplate}"
          ItemsSource="{Binding View}">

    <TreeView.ContextMenu>
        <ContextMenu>
            <telerik:RadMenuItem Header="Remove" Command="{Binding RemoveCommand}" CommandParameter="{Binding ElementName=treeView, Path=SelectedItem, Mode=OneWay}" />
        </ContextMenu>
    </TreeView.ContextMenu>
</TreeView>

出力ウィンドウで次のような例外を受け取ります

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=treeView'. BindingExpression:Path=SelectedItem; DataItem=null; target element is 'RadMenuItem' (Name=''); target property is 'CommandParameter' (type 'Object')

私は実際にRadTreeViewを使用していますが、TreeViewにも同じことが当てはまります。TreeViewのSelectedItemプロパティにバインドできないのはなぜですか?同じ問題であるRelativeSourceAncestorTypeを試してみました。

4

1 に答える 1

2

問題は、ポップアップコントロールと同様に、別のビジュアルツリーであるということです。エラーは、これがContextMenuのビジュアルツリー内にあるDataContextであるためCommandParameter、''と呼ばれるプロパティを''で検索しようとしていることを示しています。RadMenuItem

これはあなたを助けます:配置ターゲット

CommandTargetMenuItemのプロパティをContextMenuのプロパティに設定することになりましPlacementTargetたが、それがあなたが取っているアプローチではないようです。それでも、それPlacementTargetはあなたが探しているものです。

于 2012-05-23T01:21:53.267 に答える