【发布时间】:2020-04-05 08:58:18
【问题描述】:
我有一个填充了项目的列表视图。这些项目中的每一个都附加了一个 ContextMenu。当用户右键单击 ListView 中的这些项目之一并单击 ContextMenu 中的按钮之一时,我需要获取 ListView 中被单击的项目的名称。
我的 ListView XAML 如下所示:
<ListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Click="Download" Header="Download" 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>
当我右键单击名为“Download”的 MenuItem 时,会调用 Download() 函数。
这是 Download() 的代码:
private void Download(object sender, RoutedEventArgs e)
{
ListViewItem selectedItem = list.SelectedItem as ListViewItem;
Console.WriteLine("Download clicked!");
if (selectedItem == null)
{
Console.WriteLine("It's nothing!");
}
}
ListView 中的选定项始终为空。是不是因为当用户右键带来 在上下文菜单中 ListViewItem 在技术上不再被选中?我该如何解决这个问题?
【问题讨论】:
标签: c# wpf listview user-interface contextmenu