C# 未激发listview的itemtemplate中控件的上下文菜单事件或触发器
我有以下问题。我的xaml代码中存在以下情况:C# 未激发listview的itemtemplate中控件的上下文菜单事件或触发器,c#,wpf,itemtemplate,eventtrigger,C#,Wpf,Itemtemplate,Eventtrigger,我有以下问题。我的xaml代码中存在以下情况: <ListView ItemsSource="{Binding ListViewItems}"> <ListView.ItemTemplate> <DataTemplate> <WrapPanel> <Label Content="Test">
<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
添加它,请参阅。关于命令,您可以为列表视图
定义它,而不是为标签
定义它。