Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ItemsControl内ContextMenu项的WPF命令绑定_C#_Wpf_Contextmenu_Itemscontrol_Commandbinding - Fatal编程技术网

C# ItemsControl内ContextMenu项的WPF命令绑定

C# ItemsControl内ContextMenu项的WPF命令绑定,c#,wpf,contextmenu,itemscontrol,commandbinding,C#,Wpf,Contextmenu,Itemscontrol,Commandbinding,我的应用程序由一个main窗口和一个ContentControl组成,我根据所选菜单更改ViewModel 我显示为内容的其中一个用户控件包含以下WrapPanel: <UserControl ...> <Grid> <WrapPanel> <ItemsControl ItemsSource="{Binding Connections}"> <ItemsContr

我的应用程序由一个
main窗口
和一个
ContentControl
组成,我根据所选菜单更改ViewModel

我显示为内容的其中一个用户控件包含以下
WrapPanel

<UserControl ...>
    <Grid>
        <WrapPanel>
            <ItemsControl ItemsSource="{Binding Connections}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Button Command="{Binding DataContext.ConnectionSelectCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
                                CommandParameter="{Binding}"
                                FocusManager.FocusedElement="{Binding ElementName=InstanceName}"
                                Style="{DynamicResource DashboardButton}">
                            <TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" Text="{Binding Name}" />
                            <Button.ContextMenu>
                                <ContextMenu>
                                    <MenuItem Header="Delete"
                                              Command="{Binding ConnectionRemoveCommand}"
                                              CommandParameter="{Binding}" />
                                </ContextMenu>
                            </Button.ContextMenu>
                        </Button>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
        </WrapPanel>
    </Grid>
</UserControl>

上下文菜单上的
命令
不起作用,因为它试图调用
连接
对象上的
连接移除命令
,而不是
连接视图模型
,后者是
用户控件的
数据上下文


如何将
命令
绑定到
连接视图模型
,而
命令参数
连接
对象?

如果将
按钮
标记
属性绑定到
项控件
数据上下文
,然后,您可以使用
上下文菜单的
PlacementTarget
绑定到它:

<Button Command="{Binding DataContext.ConnectionSelectCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
        CommandParameter="{Binding}"
        FocusManager.FocusedElement="{Binding ElementName=InstanceName}"
        Style="{DynamicResource DashboardButton}"
        Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ItemsControl}}">
    <TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" Text="{Binding Name}" />
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Delete"
                    Command="{Binding PlacementTarget.Tag.ConnectionRemoveCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
                    CommandParameter="{Binding}" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>

如果将
按钮的
标记
属性绑定到
项控件
数据上下文
,则可以使用
上下文菜单
放置目标
绑定到它:

<Button Command="{Binding DataContext.ConnectionSelectCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
        CommandParameter="{Binding}"
        FocusManager.FocusedElement="{Binding ElementName=InstanceName}"
        Style="{DynamicResource DashboardButton}"
        Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ItemsControl}}">
    <TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" Text="{Binding Name}" />
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Delete"
                    Command="{Binding PlacementTarget.Tag.ConnectionRemoveCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
                    CommandParameter="{Binding}" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>


我相信这里的问题是关于
CommandParameter
而不是
Command
!如果有帮助的话,你能检查一下这个链接吗:。我相信这里的问题是关于
CommandParameter
而不是
Command
!你能检查一下这个链接吗。