如何获取上下文菜单单击事件的选定列表视图项
本文关键字:事件 列表 视图 单击 菜单 何获取 获取 上下文 | 更新日期: 2023-09-27 18:30:26
当单击分配给列表视图项目的上下文菜单时,我需要帮助来获取选定的列表视图项目详细信息。
<ListView.Resources>
<ContextMenu x:Key="GvRowMenu" ItemsSource="{Binding ContextMenuItems}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding IconPath}"></Image>
<TextBlock Text="{Binding Name}"></TextBlock>
<MenuItem
Click="MenuItem_Click"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=DataContext.RunCommand}" />
这是一个点击事件代码
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
//what needs to de here?
}
我在视图模型中编写了这段代码,但它不会在执行方法上触发
RunCommand = new DelegateCommand<object>(OnRunCommand, CanRunCommand);
private void OnRunCommand(object obj)
{
// use the object here...
}
private bool CanRunCommand(object obj)
{
return true;
}
让我知道,我该如何处理这种情况。任何与此相关的示例将不胜感激。
谢谢
你正在混合你的方法...您可以运行事件,也可以使用命令,但不能同时运行两者。
你想要的是绑定命令:
<MenuItem Command="{Binding DataContext.RunCommand}" />
那里有许多奇妙的信息来源......这是其一。
谢谢..!好吧,下面的一段代码对我有用。
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = (MenuItem)e.Source;
ContextMenu contextMenu = menuItem.CommandParameter as ContextMenu;
ListViewItem item = (ListViewItem)contextMenu.PlacementTarget;
var x = ((myViewModel)(item.Content)).myModel;
//'x' gives all required data of list view item
}
这是我的 XAML
<ListView.Resources>
<ContextMenu x:Key="GvRowMenu" ItemsSource="{Binding ContextMenuItems}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImagePath}"/>
<TextBlock Text="{Binding Name}"/>
<MenuItem Click="MenuItem_Click"
CommandParameter="{Binding
RelativeSource={RelativeSource
AncestorType={x:Type ContextMenu}}}"/>
</StackPanel>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</ListView.Resources>