C# 在运行时将项添加到数据绑定上下文菜单
我需要在上下文菜单中显示项目列表。除此之外,我需要在顶部显示用户可配置的常用项,后面是分隔符,然后是所有项的标准列表。我知道,我可以在运行时将所有项目添加到上下文菜单中,但我也想探索不同的选项。问题是——是否有可能: 在xaml中绑定标准列表,然后在运行时添加常用项。 或 将上下文菜单绑定到两个单独的列表 或 还有更好的选择吗 请注意,由于一些技术原因,我需要维护两个单独的列表。C# 在运行时将项添加到数据绑定上下文菜单,c#,wpf,data-binding,.net-4.0,contextmenu,C#,Wpf,Data Binding,.net 4.0,Contextmenu,我需要在上下文菜单中显示项目列表。除此之外,我需要在顶部显示用户可配置的常用项,后面是分隔符,然后是所有项的标准列表。我知道,我可以在运行时将所有项目添加到上下文菜单中,但我也想探索不同的选项。问题是——是否有可能: 在xaml中绑定标准列表,然后在运行时添加常用项。 或 将上下文菜单绑定到两个单独的列表 或 还有更好的选择吗 请注意,由于一些技术原因,我需要维护两个单独的列表。 我没有显示任何现有代码,因为这个问题可能被视为一个通用问题,并且可能适用于任何控件。第二个选项可以使用,但是绑定功能
我没有显示任何现有代码,因为这个问题可能被视为一个通用问题,并且可能适用于任何控件。第二个选项可以使用,但是绑定功能有点小,不能在-binding中使用DataContext、ElementName或RelativeSource
我的另一个问题显示了两种绑定方式。如果无法满足这些限制,则必须在代码隐藏中创建复合集合。我将在ViewModels中管理菜单,而不是在XAML中。我的ViewModel将负责返回一个集合,该集合同时包含标准菜单集合和自定义UserCollection 通常,我用空值分隔项目,如果项目为空,则使用DataTrigger绘制模板作为分隔符 大概是这样的:
myMenu.AddRange(UserMenu);
myMenu.Add(null);
myMenu.AddRange(StandardMenu);
还有XAML
<ContextMenu ItemsSource="{Binding MyMenu}">
<ContextMenu.Resources>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Template"
Value="{StaticResource MyMenuItemTemplate}" />
<Style.Triggers>
<DataTrigger Binding="{Binding }" Value="{x:Null}">
<Setter Property="Template"
Value="{StaticResource MySeparatorTemplate}" />
</DataTrigger>
</Style.Resources>
</Style>
</ContextMenu.Resources>
</ContextMenu>
两个菜单,每个都绑定到单独的列表,在两个列表之间有一个自定义的HTML分隔符,怎么样?你是说两个菜单,然后是包含标准列表和频繁列表的子菜单?技术上可能,但用户可能不喜欢这样。此应用旨在提高呼叫中心的性能。我必须将点击次数和/或导航次数保持在最低限度。