Прежде всего, вопрос: какова ваша конечная цель, и можете ли вы приблизиться к ней, не щелкнув правой кнопкой мыши по контекстному пункту меню? Возможно, вам может понадобиться иерархическая combobox, как на картинке здесь Any ideas how to implement ComboBox to represent hierarchical data?. Хотя это может вас не устраивать, если вы действительно хотите выполнить действие над элементом в своем поле со списком.
С этим в сторону, HighCore поставил вас на правильный трек (извините HighCore, я собираюсь украсть немного вашего грома здесь, но в качестве утешения я даю вам пару голосов). Главное, что ContextMenu является свойством ComboBoxItem, а не самой ComboBox.
Этот фрагмент кода может помочь вам приблизиться, хотя я не тестировал его за пределами XamlPad. Вероятно, у вас будет дополнительный шаг, чтобы убедиться, что ваши привязки могут достичь вашей модели представления с помощью команды, а также свойства Id вашего элемента меню, где бы вы ни определили это. Попробуйте RelativeSource Binding, но вернитесь, если вам нужна помощь. Удачи!
<ComboBox>
<ComboBox.Resources>
<ContextMenu x:Key="contextMenu">
<MenuItem Header="Delete Expense Category" Command="{Binding DeleteMenuItemCommand}"
CommandTarget="{Binding HighlightedExpenseCategory}" CommandParameter="{Binding Id}" />
</ContextMenu>
</ComboBox.Resources>
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Style.Setters>
<Setter Property="ContextMenu" Value="{StaticResource contextMenu}" />
</Style.Setters>
</Style>
</ComboBox.ItemContainerStyle>
<ComboBoxItem Content="1" />
<ComboBoxItem Content="2" />
</ComboBox>
Если вы хотите, чтобы щелкнуть правой кнопкой мыши ComboBoxItem, почему бы не поставить ContextMenu в ComboBoxItem вместо ComboBox? –
действительная точка, но у меня нет ComboBoxItems, поскольку она привязана к ItemSource. Извините, я должен был упомянуть об этом в моем вопросе. Это то, что вы имели ввиду? – Salty
Затем поставьте это как часть ComboBox 'ItemContainerStyle'. –