有没有办法在WPF / MVVM中绑定突出显示的ComboBox项?
我想要这种行为的原因是我希望能够右键单击ComboBox项并在CommandParameter中传递参数(Item Id)。
由于在我左键单击该项目之前没有实际选择任何项目,因此我没有要传递的参数...
请问?
<ComboBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Delete Expense Category" Command="{Binding DeleteMenuItemCommand}"
CommandTarget="{Binding HighlightedExpenseCategory}" CommandParameter="{Binding Id}"></MenuItem>
</ContextMenu>
</ComboBox.ContextMenu>
答案 0 :(得分:2)
首先提出一个问题:您的最终目标是什么?您可以在没有用户右键单击上下文菜单项的情况下进行处理吗?也许您可能想要的是一个分层组合框,如图中的Any ideas how to implement ComboBox to represent hierarchical data?。虽然如果您确实只想对组合框中的项目执行操作,这可能不适合您。
除此之外,然后HighCore让你走上了正确的道路(对不起HighCore,我要在这里偷一点你的雷声,但作为一种安慰,我给你几张选票)。关键是ContextMenu是ComboBoxItem的属性,而不是ComboBox本身。
此代码段可能会帮助您更进一步,但我还没有测试过XamlPad。您可能还需要执行其他步骤,确保绑定可以使用命令以及菜单项的Id属性访问您的视图模型,无论您在何处定义它。试试Binding的RelativeSource,但如果你需要帮助,请回来。祝你好运!
<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>