我有一组包含超过3000个字段的数据。 我不想为每个字段手动创建类和属性。
有没有办法可以创建动态对象行并将它们绑定到列表中。
我尝试的所有内容都失败了,我不确定它是否可能使用绑定。
有人如何将问题标记下来但没有人知道解决方案。
答案 0 :(得分:0)
我在动态构建的表中遇到了同样的问题。通过一些研究,我想出了一个能够处理不同数量字段的解决方案。它由两个类组成。
首先是一个属性类,将其视为表中的一列。
public class Property
{
public string Name { get; private set; }//field name
public object Value { get; set; }//value
public Type DataType { get; private set; }//datatype if needed
}
然后,你有一个记录类 - 它本质上是一个Property对象的集合。看看这是表格中的一行。
public class Record : INotifyPropertyChanged
{
private ObservableCollection<Property> _Properties;
public ObservableCollection<Property> Properties
{
get { return _Properties; }
set
{
_Properties = value;
OnPropertyChanged("Properties");
}
}
public Record(List<Property> properties)
{
_Properties = new ObservableCollection<Property>();
foreach (var property in properties)
_Properties.Add(property);
}
public Record(List<Property> properties)
{
_Properties = new ObservableCollection<Property>();
foreach (var property in properties)
_Properties.Add(property);
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
//protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
//{
// PropertyChangedEventHandler handler = this.PropertyChanged;
// if (handler != null)
// {
// handler(this, args);
// }
//}
}
然后,您可以将基本上是记录集合的内容绑定到您需要的任何控件或项目。
答案 1 :(得分:0)
你说你用过我的评论并发帖。
我现在无法访问代码但是对于GridView,我使用List然后在ctor中为每列创建GridViewColumn并将其绑定到string [i]。或者您可以使用DataTable和DataGrid。