2

Entity Framework我正在使用and创建一个应用程序MVVM。在我的应用程序中,我combobox使用以下链接创建了一个

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

组合框

到现在为止还挺好。但是在我的应用程序中,我将我分配给我PropertiesEntityFramework实体中的数据对象,以将数据保存到数据库中。

虚拟机构造函数;

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

但就像在示例网络链接中一样,组合框绑定的类型如下;

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

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

 Items = e.BenefitsProvided;

错误 1 ​​无法将类型“字符串”隐式转换为“System.Collections.Generic.Dictionary”

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

任何帮助或实现这一目标的替代方法将不胜感激。

4

1 回答 1

0

如果我正确理解您的模型,则该属性BenefitsProvided是一个string包含员工的各种福利的字符串,以逗号分隔的列表形式显示,例如"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值都应该是相同的文本。

于 2013-03-29T14:04:50.447 回答