gpt4 book ai didi

c# - 仅用于 ListViewItem 的上下文菜单

转载 作者:太空狗 更新时间:2023-10-29 20:50:18 26 4
gpt4 key购买 nike

我有一个上下文菜单 - 问题是我需要它仅在单击 listviewitem 时打开。现在,如果我单击 ListView 或标题中的任意位置,它将打开。

<ListView> 
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="More Info" Command="{Binding MoreInfo}" />
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<!-- columns and stuff here -->
</GridView>
</ListView.View>
</ListView>

我已经尝试将 ContextMenu 添加为资源并将其应用为样式,但这会破坏命令(单击“更多信息”应该会打开一个对话框窗口,但这种方式行不通)

<ListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header="More Info" Command="{Binding MoreInfo}" Background="WhiteSmoke" />
</ContextMenu>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" >
<Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}" />
</Style>
</ListView.ItemContainerStyle>

所以不确定如何将上下文菜单限制为仅 listviewitem 并使命令起作用。

最佳答案

使用 RelativeSource在模板的命令绑定(bind)中,它将起作用:

<ListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header="More Info" Command="{Binding Path=DataContext.MoreInfo, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}" Background="WhiteSmoke" />
</ContextMenu>
</ListView.Resources>

<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" >
<Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}" />
</Style>
</ListView.ItemContainerStyle>

关于c# - 仅用于 ListViewItem 的上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18921188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com