ContextMenuを含むものを設計する必要がありますMenuItem。これには、ViewModelMenuItemの型のプロパティにバインドするより深いレベルのメニュー リストがあります。ObservableCollectionコードは次のようになります。
<ContextMenu DataContext="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource Self}}" >
...
<MenuItem Header="Map to account" >
<ItemsControl ItemsSource="{Binding RelatedAccounts}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Number}"
Command="{Binding PlacementTarget.DataContext.MapToAccountCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding}"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</MenuItem>
...
</ContextMenu>
アイデアは、ユーザーが UI から 1 つの支払い項目を右クリックし、[アカウントにマップ] メニュー項目に移動すると、メニュー項目のより深いレベルが表示され、ユーザーが選択できるすべての関連アカウントが一覧表示されます (へのItemsControlバインドを見ることができますRelatedAccounts)
すべてが正常に機能し、ViewModel から公開したすべての関連アカウントがコンテキスト メニューに正しく表示されます。ユーザーが 1 つのアカウントを右クリックすると、選択したアカウントの渡されたパラメーターで ViewModelのCommandプロパティが実行されます。MapToAccountCommand
しかし、私が望まない動作が 1 つあります。マウスが [アカウントにマップ] メニューよりも 1 レベル深くなると、実際にはメニュー項目のコレクション全体が強調表示されます。以下の写真をご覧ください。

上記は「USD Account 1」にマウスを合わせた場合です。
また、マウスが特定のアカウントではなく、より深いレベルのメニュー内の他の領域にある場合でも、ハイライト効果はまだそこにあります。画像を参照してください。

これは明らかに正しくありません。誰が私が間違ったことを教えてもらえますか? ありがとう!