显示WPF中动态生成的ListView或Datagrid



我有一个双列表,我需要以类似电子表格的方式显示,我不确定什么是最好的方法。

c#:

public class ViewModelClass
{
public List<ClassA> Data {get;set;}
//more code
}
public class ClassA
{
public string ColumnName {get;set;}
public List<ClassB> Values {get;set;}
//more code
}
public class ClassB
{
public string DisplayValue {get;set;}
//more code
}

应该显示为

<表类>行Item1第二条Item3tbody><<tr>1Value1.1Value2.1Value3.12Value2.2Value3.13价值2.3

要创建像图片中那样的表,必须重新设计类以表示基于行的数据结构。

如果您不想使用DataTable作为DataGrid的数据源,那么您的类必须被设计成包含每个映射到一个列的属性。默认情况下,属性的名称是列名。类本身代表一行。

下面的示例创建了一个类型,它有三个列,名为Item1…Item3:

class MyRowData : INotifyPropertyChanged 
{
// TODO:: Let all property setters raise the PropertyChanged event
public string Item1 { get; set; }
public string Item2 { get; set; }
public string Item3 { get; set; }
}

这是你的基本数据结构。

要创建行,您需要创建MyRowData的实例并将它们添加到绑定到DataGrid.ItemsSource属性的集合中:

// ItemsSource for the DataGrid 
public ObservableCollection<MyRowData> TableData { get; }
for (int i = 1; i < 4; i++)
{
var newRow = new MyRowData 
{
Item1 = $"Value1.{i}",
Item2 = $"Value2.{i}",
Item3 = $"Value3.{i}"
};
this.TableData.Add(newRow);
}

要使DataGrid能够使用修改的数据更新自己,您的数据模型(在本例中为MyRowData)必须实现INotifyPropertyChanged

最新更新