无法使用ComboBox WPF中的Multiselect项目进行保存

时间:2013-03-29 09:00:45

标签: wpf entity-framework mvvm combobox

我使用Entity FrameworkMVVM创建了一个应用程序。在我的应用中,我使用the following link

创建了combobox

在这个链接中,这正是我想要实现的目标。允许用户从组合框中选择多个项目。下面的图片将让您更好地了解我想要创建的内容。

ComboBox

到目前为止一切顺利。但是在我的应用程序中,我将Properties分配给EntityFramework实体中的数据对象,以将数据保存到数据库中。

VM构造函数;

    public EmployeeViewModel(DataObjects.Employee e)
        : base("")
    {
        EmployeeID = e.EmployeeID;
        Title = e.Title;
        FirstName = e.FirstName;
        Surname = e.Surname;
        Position = e.Position;
     }

但是在示例Web链接中,组合框绑定的类型如下;

private Dictionary<string, object> _items;
public Dictionary<string, object> Items
    {
        get
        {
             return _items;
        }
        set
        {
             _items = value;
             OnPropertyChanged("Items");
        }
    }

因此,如果我在构造函数中执行以下操作,则会产生以下错误;

 Items = e.BenefitsProvided;

错误1无法将类型'string'隐式转换为'System.Collections.Generic.Dictionary'

这引出了我的问题。如何设置将类型Dictionary<string, object>分配给名为BenefitsProvided的Employee表中的类型,这是一个nvarchar?有没有可以使用的转换器?

非常感谢任何帮助或其他方法来实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的模型,则属性BenefitsProvidedstring,其中包含员工作为逗号分隔列表中的字符串的各种好处,例如"Voucher,Accomodation,Medical"。在这种情况下,您可以将字符串拆分为子字符串数组,并使用此数组创建字典:

Items = new Dictionary<string, object>();
string[] elements = e.BenefitsProvided.Split(',');
foreach (var element in elements)
    Items.Add(element, element);

或者使用LINQ以更紧凑的形式:

Items = e.BenefitsProvided.Split(',').ToDictionary(s => s, s => (object)s);

我在这里假设字典的string键和object值都应该是相同的文本。