gpt4 book ai didi

WPF MVVM - 在组合框中绑定(bind)突出显示的项目

转载 作者:行者123 更新时间:2023-12-03 10:29:15 26 4
gpt4 key购买 nike

有没有办法在 WPF/MVVM 中绑定(bind)突出显示的 ComboBox 项?

我想要这种行为的原因是我希望能够右键单击 ComboBox 项目并在 CommandParameter 中传递参数(与此相关的项目 ID)。

由于在我左键单击该项目之前实际上没有选择任何项目,因此我没有要传递的参数......

请问有什么想法吗?

<ComboBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Delete Expense Category" Command="{Binding DeleteMenuItemCommand}"
CommandTarget="{Binding HighlightedExpenseCategory}" CommandParameter="{Binding Id}"></MenuItem>
</ContextMenu>
</ComboBox.ContextMenu>

最佳答案

首先是一个问题:您的最终目标是什么?您可以在不让用户右键单击上下文菜单项的情况下实现它吗?也许你想要的是一个层次组合框,就像这里的图片 Any ideas how to implement ComboBox to represent hierarchical data? .如果您确实只想对组合框中的项目执行操作,这可能不适合您。

除此之外,HighCore 让你走上了正确的轨道(对不起,HighCore,我将在这里偷走你的一些风头,但作为安慰,我给你几票)。关键是 ContextMenu 是 ComboBoxItem 的属性,而不是 ComboBox 本身。

此代码片段可能会帮助您更进一步,尽管我没有在 XamlPad 之外进行测试。您可能需要一个额外的步骤来确保您的绑定(bind)可以使用命令以及菜单项的 Id 属性到达您的 View 模型,无论您在哪里定义了它。尝试 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>

关于WPF MVVM - 在组合框中绑定(bind)突出显示的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com