Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# 未激发listview的itemtemplate中控件的上下文菜单事件或触发器_C#_Wpf_Itemtemplate_Eventtrigger - Fatal编程技术网

C# 未激发listview的itemtemplate中控件的上下文菜单事件或触发器

C# 未激发listview的itemtemplate中控件的上下文菜单事件或触发器,c#,wpf,itemtemplate,eventtrigger,C#,Wpf,Itemtemplate,Eventtrigger,我有以下问题。我的xaml代码中存在以下情况: <ListView ItemsSource="{Binding ListViewItems}"> <ListView.ItemTemplate> <DataTemplate> <WrapPanel> <Label Content="Test">

我有以下问题。我的xaml代码中存在以下情况:

    <ListView ItemsSource="{Binding ListViewItems}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <WrapPanel>
                    <Label Content="Test">
                        <Label.ContextMenu>
                            <ContextMenu ItemsSource="{Binding MenuItems}">

                            </ContextMenu>
                        </Label.ContextMenu>
                    </Label>
                </WrapPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="PreviewMouseUp">
                <i:InvokeCommandAction Command="{Binding LabelMouseUpCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </ListView>

单击标签后,不会显示上下文菜单,并且触发器也不工作,因此不会输入LabelMouseUpCommand方法。我担心listview会自行处理单击,而不会将其传递给嵌入式控件


是否有办法将其传递给控制装置。将来,我想在itemtemplate中添加几个控件,每个控件都有自己的上下文菜单。

我找到了解决此问题的答案

作者在这里解释说,contextmenu与listview不在同一个可视树中。因此,我的初始绑定无法工作,因为在可视化树中找不到源

此外,Sinatr完全正确,触发器最初是为listview定义的,而不是为标签定义的

这是我的工作代码:

<ListView ItemsSource="{Binding ListViewItems}" x:Name="listViewMain">
    <ListView.ItemTemplate>
        <DataTemplate>
            <WrapPanel>
                <Label Content="Test">
                    <Label.ContextMenu>
                        <ContextMenu ItemsSource="{Binding DataContext.MenuItems, Source={x:Reference listViewMain}}">

                        </ContextMenu>
                    </Label.ContextMenu>
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="PreviewMouseUp">
                            <i:InvokeCommandAction Command="{Binding DataContext.LabelMouseUpCommand, Source={x:Reference listViewMain}}" />
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </Label>
            </WrapPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>


如果右键单击标签,可以看到上下文菜单吗?
label.Background
为空,这要求您准确地单击文本以弹出菜单。将背景设置为白色(或透明)。@Mattia Magosso:否,右键单击后不会显示上下文菜单。@Sinatr:更改背景没有帮助,不会显示上下文菜单,触发器也不会工作。可能菜单仅适用于
列表视图项
,然后必须通过
ItemContainerStyle
添加它,请参阅。关于命令,您可以为
列表视图
定义它,而不是为
标签
定义它。