为什么我的WPF上下文菜单无法在ListView上运行?

时间:2018-03-05 11:40:23

标签: wpf wpf-controls

我的<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> 设置如下:

position ='identity', stat = 'identity'

然而,当我右键单击列表视图中的某个项目时,我希望弹出上下文菜单,没有任何反应。我看过的所有例子都和我的代码一样简单,但是我错误的是菜单没有出现?

1 个答案:

答案 0 :(得分: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>