C# 在运行时将项添加到数据绑定上下文菜单

C# 在运行时将项添加到数据绑定上下文菜单,c#,wpf,data-binding,.net-4.0,contextmenu,C#,Wpf,Data Binding,.net 4.0,Contextmenu,我需要在上下文菜单中显示项目列表。除此之外,我需要在顶部显示用户可配置的常用项,后面是分隔符,然后是所有项的标准列表。我知道,我可以在运行时将所有项目添加到上下文菜单中,但我也想探索不同的选项。问题是——是否有可能: 在xaml中绑定标准列表,然后在运行时添加常用项。 或 将上下文菜单绑定到两个单独的列表 或 还有更好的选择吗 请注意,由于一些技术原因,我需要维护两个单独的列表。 我没有显示任何现有代码,因为这个问题可能被视为一个通用问题,并且可能适用于任何控件。第二个选项可以使用,但是绑定功能

我需要在上下文菜单中显示项目列表。除此之外,我需要在顶部显示用户可配置的常用项,后面是分隔符,然后是所有项的标准列表。我知道,我可以在运行时将所有项目添加到上下文菜单中,但我也想探索不同的选项。问题是——是否有可能:

在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分隔符,怎么样?你是说两个菜单,然后是包含标准列表和频繁列表的子菜单?技术上可能,但用户可能不喜欢这样。此应用旨在提高呼叫中心的性能。我必须将点击次数和/或导航次数保持在最低限度。