带有可编辑ComboBox的DataGrid,用于多对多关系中的可能值

时间:2014-12-24 20:24:36

标签: c# wpf entity-framework xaml

以下是一些具有多对多关系的简单类:

using System.Collections.ObjectModel;
using System.Data.Entity;

namespace NodesLabels
{
    public class Node
    {
        public int ID { get; set; }
        public string Title { get; set; }

        public virtual ObservableCollection<NodeLabel> Labels { get; set; }

        public Node() { Labels = new ObservableCollection<NodeLabel>(); }
    }

    public class NodeLabel
    {
        public int ID { get; set; }
        public string Title { get; set; }

        public virtual ObservableCollection<Node> Nodes { get; set; }

        public NodeLabel() { Nodes = new ObservableCollection<Node>(); }
    }

    public class GraphContext : DbContext
    {
        public DbSet<Node> Nodes { get; set; }
        public DbSet<NodeLabel> NodeLabels { get; set; }
    }
}

我已添加NodeNodeLabel作为数据来源:

enter image description here

如果我拖入Node,我会得到一个DataGrid,我可以在其中创建新的Node个对象,指定其标题。如果我拖入Labels我会收到另一个DataGrid,我可以在其中添加Label个与所选Node相关联的对象。

此处,Node DataGrid位于顶部,Labels DataGrid位于底部。我已经添加了&#34; Dune&#34;作为Node,并为其提供Label&#34; Book&#34;。

enter image description here

现在,我希望能够选择节点&#34; Abstract Algebra&#34;并将其与相同的&#34; Book&#34;标签。但是,如果输入&#34; Book&#34;在标签DataGrid中,将创建Label的新实例,其中包含&#34; Book&#34;标题;即&#34; Book&#34;的原始实例。不会被重复使用。

理想情况下,我希望Labels DataGrid有一个可编辑的ComboBox,这样我就可以从现有的Label个实例中进行选择,而不是总是创造新的。

什么是设置它的好方法?

0 个答案:

没有答案