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

时间:2013-08-16 00:18:29

标签: c# wpf visual-studio mvvm contextmenu

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

到目前为止,这是我在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>

查看后面的XAML代码:

private TitleViewMode TVM=new TitleViewMode;
public Welcome()
    {
        InitializeComponent();
        _grid1.ContextMenu.DataContext = TVM;
    }

视图模型

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

}

1 个答案:

答案 0 :(得分:1)

这应该有效

<MenuItem Header="Add User to" ItemsSource="{Binding Entries}">
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding Name}"></MenuItem>
        </DataTemplate>
     </MenuItem.ItemTemplate>
</MenuItem>