0

リスト ビュー アイテムに割り当てられたコンテキスト メニューがクリックされたときに、選択されたリスト ビュー アイテムの詳細を取得する方法を教えてください。

 <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;
    }

どうすればこの状況に対処できるか教えてください。同じことに関連する例をいただければ幸いです。

ありがとう

4

2 に答える 2

1

メソッドを混在させています...イベントを実行したり、コマンドを使用したりできますが、両方を一緒に使用することはできません。

あなたが望むのは、コマンドをバインドすることです:

<MenuItem Command="{Binding DataContext.RunCommand}" />

そこには多くの素晴らしい情報源があります...ここにその1つがあります。

于 2012-04-09T18:49:45.163 に答える
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>
于 2012-04-10T11:56:51.130 に答える