【发布时间】:2013-04-18 21:28:23
【问题描述】:
所有,我正在创建一个在运行时“绑定”到DataGrid 的数据集。我提取了一些用于构建继承自ObservableCollection<T> 的类的数据。有问题的课程是
public class ResourceData : ObservableCollection<ResourceRow>
{
public ResourceData(List<ResourceRow> resourceRowList) : base()
{
foreach (ResourceRow row in resourceRowList)
Add(row);
}
}
public class ResourceRow
{
private string keyIndex;
private string fileName;
private string resourceName;
private List<string> resourceStringList;
public string KeyIndex
{
get { return keyIndex; }
set { keyIndex = value; }
}
public string FileName
{
get { return fileName; }
set { fileName = value; }
}
public string ResourceName
{
get { return resourceName; }
set { resourceName = value; }
}
public List<string> ResourceStringList
{
get { return resourceStringList; }
set { resourceStringList = value; }
}
}
我从一个名为BuildDataGrid()的方法返回一个ResourceData对象,定义为
private ResourceData BuildDataGrid(Dictionary<string, string> cultureDict)
{
// ...
}
然后我将DataGrid 的ItemSource 设置为此ResourceData 对象通过
dataGrid.ItemSource = BuiltDataGrid(cultureDictionary);
但是,这并没有正确扩展 ResourceStringList 内的 ResourceRow。我得到展示:
我的问题是:如何修改我的 ResourceRow 类以允许 DataGrid 自动读取和显示 ResourceData 对象的内容? 我想显示每个项目ResourceStringList 在单独的列中。
感谢您的宝贵时间。
【问题讨论】:
-
每个resourceStringList 对象是否包含相同数量的元素?如果是这样,从 ResourceRow 对象的资源字符串列表中枚举要添加的列可能是最简单的。如果集合中的字符串数量因 ResourceRow 对象而异,问题就会变得更加困难,因为您将混合使用设计时列和运行时列,这需要代码隐藏来混合在一起
-
对于每次加载,是的,
resourceStringList对象将包含相同数量的项目。我在这里使用 List以避免在使用数组时需要初始化... -
所以您想将
ResourceStringList显示为额外的列,还是仅将它们显示为单元格内的可编辑列表? -
作为额外的列。我的计划是将标准字符串作为列,但由于某些数据在运行时是未知的,所以我将这些东西放在一个列表中......
标签: c# wpf datagrid itemssource