当点击分配给列表视图项的上下文菜单时,我需要帮助才能获得选定列表视图项详细信息。
<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;
}
请告诉我,我该如何处理这种情况。任何与此相关的例子都将受到赞赏。
由于
答案 0 :(得分:1)
你正在混合你的方法......你可以运行一个事件,或者你可以使用一个命令,但不能同时使用它们。
你想要的是绑定命令:
<MenuItem Command="{Binding DataContext.RunCommand}" />
有许多精彩的信息来源...... here is one。
答案 1 :(得分:0)
谢谢..! 好吧,下面的代码对我有用。
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>