0

ContextMenu の MenuItem に要素を名前でバインドしようとしています。バインドする要素:

<UserControl x:Class="ATCheckerView.TestsPropagate"
         x:Name="TestPropagateRoot" ...

作業バージョン:

        <HierarchicalDataTemplate x:Key="SchemTemplate">
            <Button Command="{Binding ElementName=TestPropagateRoot, Path=DataContext.vclient.OpenInViewer}" />               
        </HierarchicalDataTemplate>

非稼働:

           <HierarchicalDataTemplate x:Key="SchemTemplate">                
            <TextBlock Text="{Binding path}">
                <TextBlock.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="{Binding ElementName=TestPropagateRoot}"
                                  Command="{Binding ElementName=TestPropagateRoot, Path=DataContext.vclient.OpenInViewer}"
                                  CommandParameter="{Binding}" />
                    </ContextMenu>
                </TextBlock.ContextMenu>
            </TextBlock>
        </HierarchicalDataTemplate>
4

2 に答える 2

1

hereは、コンテキストメニューバインディングを処理する方法をいくつか示す同様の質問と良い答えです。

ところで、ほとんどの場合 PlacementTarget Binding を使用します。

        <TextBlock Text="{Binding path}">
            <TextBlock.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Test"
                              Command="{Binding Path=PlacementTarget.DataContext.vclient.OpenInViewer, 
                                                RelativeSource={RelativeSource AncestorType=ContextMenu}}"
                              CommandParameter="{Binding}" />
                </ContextMenu>
            </TextBlock.ContextMenu>
        </TextBlock>

編集: .net4.0 を使用している場合は、{x:Reference TestPropagateRoot} もオプションになる場合があります

于 2012-08-07T12:49:00.323 に答える