单元格模板绑定到数组的数据网格仅显示第一列中的数据?



我在让单元格模板与 DatagridTemplateColumn 一起使用时遇到问题。 显示的输出显示用每行第一列中的数据填充的所有列。

如果我将单元格的文本绑定设置为 {绑定 [2]。Text},它显示了所有列中第 3 列的数据,所以我认为我需要在单元格模板中获取索引。 我尝试将绑定设置为 {绑定 [{显示索引}]。文本},但随后我收到" 绑定表达式路径错误:"[]"属性在'对象'上找不到">

PS:我必须使用DataGridTemplateColumn,因为我将来会做更复杂的显示。

以下是相关的 xaml:

<DataGrid ItemsSource="{Binding TableItems}" AutoGenerateColumns="False" >
<DataGrid.Resources>
<DataTemplate x:Key="MyCellTemplate" >
<TextBlock Text="{Binding Text}" />
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn CellTemplate="{StaticResource MyCellTemplate}" Header="Col1" />
<DataGridTemplateColumn CellTemplate="{StaticResource MyCellTemplate}" Header="Col2" />
<DataGridTemplateColumn CellTemplate="{StaticResource MyCellTemplate}" Header="Col3" />
</DataGrid.Columns>
</DataGrid>

绑定数据:

public ObservableCollection<string[]> TableItems { get; set; } 
...
TableItems.Add(new string[]{"A","B","C"};
TableItems.Add(new string[]{"D","E","F"};
TableItems.Add(new string[]{"G","H","I"};

当我运行程序时,所有列的数据都与每行中的第一列相同。 例如:

起始数据:

A,B,C
D,E,F
G,H,I

结果输出:

A,A,A
D,D,D
G,G,G

预期产出:

A,B,C
D,E,F
G,H,I

编辑:-----------------------------------

更多信息:xaml 有效,但显然我想使用一个通用的单元格模板。

<DataGrid.Columns>
<DataGridTemplateColumn Header="col1" > <DataGridTemplateColumn.CellTemplate> <DataTemplate><TextBlock Text="{Binding [0].Text}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>
<DataGridTemplateColumn Header="col2" > <DataGridTemplateColumn.CellTemplate> <DataTemplate><TextBlock Text="{Binding [1].Text}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>
<DataGridTemplateColumn Header="col3" > <DataGridTemplateColumn.CellTemplate> <DataTemplate><TextBlock Text="{Binding [2].Text}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>
</DataGrid.Columns>

这个 xaml 有效,但显然我想使用一个通用的单元格模板。

不能,因为列之间的绑定路径不同。不支持在 XAML 中执行类似{Binding [{DisplayIndex}].Text}的操作。

您可以做的是使用XamlReader.Parse方法以编程方式创建三个模板:在运行时合并数据模板

相关内容