【问题标题】:Why is my WPF Context Menu not working on a ListView?为什么我的 WPF 上下文菜单在 ListView 上不起作用?
【发布时间】:2018-03-06 21:33:30
【问题描述】:

我有一个ListView 设置如下:

<ListView x:Name="LocalGrid" DataContext="{Binding LocalFiles}" ItemsSource="{Binding Items}" SelectionMode="Single" HorizontalAlignment="Stretch">
    <ListView.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Download" Click="ServerFilesDownloadOnClick"></MenuItem>
        </ContextMenu>
    </ListView.ContextMenu>
    <ListView.View>
        <GridView AllowsColumnReorder="True">
            <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="Auto" />
            <GridViewColumn DisplayMemberBinding="{Binding Length}" Header="Size" Width="100" />  
        </GridView>
    </ListView.View>
</ListView>

然而,当我右键单击列表视图中的一个项目时,我希望上下文菜单会弹出,但没有任何反应。我看到的所有示例都像我的代码一样简单,但是我做错了什么菜单没有出现?

【问题讨论】:

  • 在您单击鼠标右键之前控件是否处于活动状态?
  • 如果您希望在单击某个项目时出现上下文菜单,那么是否必须针对 ListViewItem 定义上下文菜单?我想知道这种方法是否可行:stackoverflow.com/questions/747872/…
  • 奇怪的是它对我有用吗?你的 ListView 是什么类型的 UIElement?
  • 另外,右键单击是否至少将焦点放在被单击的项目上?
  • @LordWilmore 正如我所说,当我右键-单击一个项目时,我期待上下文菜单。这不是列表或网格视图上的上下文菜单的正常行为吗?

标签: wpf wpf-controls


【解决方案1】:

我认为可能的答案是您正在针对ListView 创建上下文菜单,它应该针对ListViewItem 创建。我相信你从来没有真正点击 ListView 本身,而是总是点击项目,因此永远不会调用上下文菜单。

建议您需要像这样构建 ListView xaml:

<ListView x:Name="LocalGrid" ...>
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        <MenuItem Header="Download" Click="ServerFilesDownloadOnClick" />
                    </ContextMenu>
                 </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
    ...
    </ListView.View>
</ListView>

【讨论】:

  • 我在ListView.Resources 中声明了上下文菜单,并在样式中使用了静态资源,例如&lt;Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}" /&gt;,但您的回答引导我朝着正确的方向前进。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2014-10-09
  • 2011-03-23
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
相关资源
最近更新 更多