将可观察集合绑定到上下文菜单

bac*_*i32 5 c# wpf contextmenu mvvm visual-studio

我正在尝试使上下文菜单显示字符串列表。该应用程序包含一个可以编辑、删除和添加到组中的人员数据网格。我有一个 StudentGroup 类,它是一个人可以添加的不同组(StudentGroup 的成员之一是名称)。ViewModel 检索完整的组列表并将其放入可观察集合中。我试图使上下文菜单正常工作,以便每当用户右键单击并将鼠标悬停在“将用户添加到”-> 上时,它都会打开一个包含可观察集合的名称字符串的侧面菜单项。

这是我到目前为止通过在 StackOverflow 上查找类似问题所尝试过的方法,但它对我来说还没有奏效。

XAML:

<DataGrid.ContextMenu>
    <ContextMenu AllowDrop="True" ItemsSource="{Binding Entries}">
        <MenuItem Header="Edit" />
        <MenuItem Header="Delete"/>
        <MenuItem Header="Add User to">
            <MenuItem.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" />
                </DataTemplate>
            </MenuItem.ItemTemplate>
        </MenuItem>
        </ContextMenu>
</DataGrid.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

视图背后的 XAML 代码:

private TitleViewMode TVM=new TitleViewMode;
public Welcome()
    {
        InitializeComponent();
        _grid1.ContextMenu.DataContext = TVM;
    }
Run Code Online (Sandbox Code Playgroud)

视图模型

class TitleViewModel
{
    public ObservableCollection<StudentGroup> Entries {get;set;}
    private List<StudentGroup> sg1 { get; set;}
    public TitletViewModel()
    {
        sg1 = GetGroups();
        Entries = new ObservableCollection<StudentGroup>(sg1);
    }

}
Run Code Online (Sandbox Code Playgroud)

Har*_*san 4

这应该有效

<MenuItem Header="Add User to" ItemsSource="{Binding Entries}">
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding Name}"></MenuItem>
        </DataTemplate>
     </MenuItem.ItemTemplate>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)