C# 绑定上下文菜单

C# 绑定上下文菜单,c#,wpf,xaml,C#,Wpf,Xaml,我的项目中有上面的代码部分,我正在尝试绑定Contextmenu命令,正确的方法是什么 我也试过了 <ItemsControl ItemsSource="{Binding ViewModelOne.Items}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Canvas/> </ItemsPa

我的项目中有上面的代码部分,我正在尝试绑定Contextmenu命令,正确的方法是什么

我也试过了

 <ItemsControl ItemsSource="{Binding ViewModelOne.Items}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemContainerStyle>
            <Style>
                <Setter Property="Canvas.Left" Value="{Binding X}"/>
                <Setter Property="Canvas.Top" Value="{Binding Y}"/>
            </Style>
        </ItemsControl.ItemContainerStyle>
        <ItemsControl.ItemTemplate>
            <DataTemplate >
                <ContentControl>
                      <StackPanel Orientation="Vertical">
                             <StackPanel.ContextMenu>
                                <ContextMenu >
                                <MenuItem Header="Delete" Command="{Binding ViewModelOne.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MainWindow}}}" />
                                </ContextMenu>
                            </StackPanel.ContextMenu>
                            <TextBlock x:Name="Details" Text="{Binding Details}" />
                            <TextBlock x:Name="Name" Text="{Binding Name}" />
                            <Rectangle x:Name="Rects" Height="10" Width="10" Stroke="Black" StrokeThickness="1" />
                        </StackPanel>
                </ContentControl>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>


我仍然无法让命令工作

而不是将ContextMenu放在StackPanel上,在
ItemContainerStyle
中为项目设置ContextMenu,并将项目的
标记设置为父数据上下文

 <MenuItem Header="Delete" Command="{Binding PlacementTarget.Tag.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}}"  />


您能在ViewModelOne.Items中显示类的声明吗?@Daniel没错,有什么解决方法或其他方法可以解决这个问题吗?启动关联菜单并单击它时,您能在输出窗口中检查任何绑定错误吗?更改为您在上面给出的操作。ElementName=window,而不是RelativeSource={RelativeSource Self}到RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}
 <ItemsControl x:Name="MyItemControl" ItemsSource="{Binding ViewModelOne.Items}">
     <ItemsControl.ItemContainerStyle>
                <Style TargetType="ContentPresenter">
                    <Setter Property="Tag" Value="{Binding DataContext, ElementName=MyItemControl}"></Setter>
                    <Setter Property="ContextMenu">
                        <Setter.Value>
                            <ContextMenu >
                                <MenuItem Header="Delete" Command="{Binding PlacementTarget.Tag.ViewModelOne.DeleteCommand, RelativeSource={RelativeSource Self}}" />
                            </ContextMenu>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Canvas.Left" Value="{Binding X}"/>
                    <Setter Property="Canvas.Top" Value="{Binding Y}"/>
                </Style>
            </ItemsControl.ItemContainerStyle>