如果得到以下对象:
Dictionary<int,KeyValuePair<int,string>> myData;
现在我想将此数据分配给DataGrid。
将列的DataPropertyName设置为“Key”或“Value”的工作正常(包含Dictionary的Key(int)和Value(keyvaluepair)。
但我想在列中显示对的键和值。
colWhatever.DataPropertyName="Value.Value"
似乎不起作用。
有没有办法做到这一点,还是我必须创建一个包含三个属性的类?
答案 0 :(得分:1)
没有办法实现它。您可以使用ViewModel并绑定此viewmodel的List<T>
,以获取示例:
创建ViewModel
public class DataViewModel
{
public int Key { get; set; }
public int ValueKey { get; set; }
public string Value { get; set; }
}
创建一种方法,将Dictionary<int,KeyValuePair<int,string>>
转换为List<DataViewModel>
:
public static List<DataViewModel> Convert(Dictionary<int,KeyValuePair<int,string>> dic)
{
return dic.Select(item => new DataViewModel() { Key = item.Key, ValueKey = item.Value.Key, Value = item.Value.Value }).ToList();
}
并将此列表应用于DataSource
属性:
grid.DataSource = Convert(myData);
在DataPropertyName
上应用列表类型中的属性。
grid.DataPropertyName = "Value";