私はバインディングアイテムを持っているコンテキストメニューを持っているので、コマンドとコマンドパラメータを設定して、どのアイテムがクリックされたのかを知りたいのですが、どうしたらいいかわかりません。
<MenuItem Command="{Binding Sync}"
Header="Synchronize"
ItemsSource="{Binding ItemsToSync}">
<MenuItem.Icon>
<Image Height="25" Source="Sync.png" />
</MenuItem.Icon>
</MenuItem>
回答:
回答№1の場合は3次のようなことを試すことができます: この例ではリストビューがあり、選択した項目を右クリックして削除できます。私がRelativeSourceを使用している理由は、menuitemsでパラメータを渡す場合、このレベルのほとんどの時間はページのデータコンテキストに到達できないからです。お役に立てれば。
<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>
回答№2の場合は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>
私はコマンドの静的クラスを作成しなければならなかった。