假设我有一个 ObservableCollection(类型 MyRow)(称为 Rows)的行。在 MyRow 中,我有一堆属性,包括 ObservableCollection(类型 MyRowContents)(称为 Contents)——它基本上是该行中所有内容的列表。MyRowContents 也有几个属性,包括 DisplayContents(字符串)。
例如...对于具有 2 行和 3 列的 DataGrid,数据结构将是 2 个“行”,每个包含 3 个“内容”。
我必须在 XAML 的 DataGrid 中做什么才能使单元格内容显示 Rows[i].Contents[j].DisplayContents?
编辑:
嗨,很抱歉在最初的消息中不够清楚。我正在尝试制作一个能够动态显示数据的数据网格(来自提前未知的数据库表)。
我以此为指导: http: //pjgcreations.blogspot.com.au/2012/09/wpf-mvvm-datagrid-column-collection.html - 我可以动态显示列。
<DataGrid ItemsSource="{Binding Rows}" AutoGenerateColumns="False"
w:DataGridExtension.Columns="{Binding ElementName=LayoutRoot, Path=DataContext.Columns}" />
我只是不知道如何动态显示行数据。
我的行是:
public class MyRow
{
public int UniqueKey { get; set; }
public ObservableCollection<MyRowContents> Contents { get; set; }
}
MyRowContents 是:
public class MyRowContents
{
public string ColumnName { get; set; } // Do I need this?
public object DisplayContents { get; set; } // What I want displayed in the grid cell
}
我的视图模型中有一个公共属性 ObservableCollection Rows,如您所见,这是我在 ItemsSource 中绑定的。但我不知道如何让每个 MyRowContents 的“DisplayContents”显示在网格视图的相应单元格中。
鉴于我可以动态显示列名,可以做出这样的假设:Contents(在 MyRow 中)中项目的顺序将与列的顺序相匹配。
谢谢