1

バインディング アイテムを含むコンテキスト メニューがあり、コマンドとコマンド パラメータを設定して、どのアイテムがクリックされたかを知ることができますが、その方法がわかりません。

<MenuItem Command="{Binding Sync}"   
  Header="Synchronize" 
  ItemsSource="{Binding ItemsToSync}">
  <MenuItem.Icon>
      <Image Height="25" Source="Sync.png" />
  </MenuItem.Icon>
</MenuItem>
4

2 に答える 2

3

次のようなことを試すことができます: この例では、リストビューがあり、選択した項目を右クリックして削除できます。ここで RelativeSource を使用している理由は、メニュー項目でパラメーターを渡す場合、ほとんどの場合、このレベルではページのデータコンテキストに到達できないためです。お役に立てれば。

               <ListView.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Delete" Command="{Binding Path=DeleteDescriptions}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}" Name="MenuItem1">
                        </MenuItem>
                    </ContextMenu>
                </ListView.ContextMenu>
于 2012-07-31T15:24:01.513 に答える
1

それは役に立ちませんでしたが、独自のソリューションを作成することができました。

 <MenuItem Header="Synchronize" ItemsSource="{Binding ItemsToSync}">
                    <MenuItem.Icon>
                        <Image Height="25" Source="Sync.png" />
                    </MenuItem.Icon>
                    <MenuItem.ItemContainerStyle>
                        <Style>
                            <Setter Property="MenuItem.Header" Value="{Binding Name}" />
                            <Setter Property="MenuItem.IsChecked" Value="{Binding IsCurrent}" />
                            <Setter Property="MenuItem.Command" Value="PT:Commands.SyncFromContextMenu" />
                            <Setter Property="MenuItem.CommandParameter" Value="{Binding}" />
                        </Style>
                    </MenuItem.ItemContainerStyle>

                </MenuItem>
</MenuItem>

コマンドの静的クラスを作成する必要がありました。

于 2012-07-31T15:42:28.700 に答える