【发布时间】:2015-01-02 21:34:17
【问题描述】:
我在TechNet 看到了这个代码示例,它展示了如何绑定单个列标题标题及其对应的列数据:
<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<TextBlock Text="{Binding DataContext.HeaderNameText, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
DataGrid 的 DataContext 设置如下:
Data data = new Data();
data.HeaderNameText = "Header2";
data.Items = new List<string>() { "Item1", "Item2" };
DataContext = data;
Data类结构如下:
public class Data
{
public string HeaderNameText { get; set; }
public List<string> Items { get; set; }
}
我的问题是如何将 DataGrid ItemSource 绑定到多列数据:
List<Data> data=new List<Data>();
我希望为上面列表中的每个数据元素获取一列,那么如何实现呢?
【问题讨论】:
-
如果您要使用
Data对象列表,那么您还将拥有多个Items,这对我来说毫无意义。拥有一个单独设置值和列标题的对象列表不是更明智吗? -
列数是变化因素,不能静态设置(标题也一样)!
-
您是说同一
ItemsSource中的行之间的列数不同吗?或者仅仅是ItemsSource中的列数不提前知道?如果是前者,您将不得不在行/记录进入时管理列集。
标签: c# wpf xaml binding wpfdatagrid