У меня проблемы с получением шаблона ячейки для работы с DatagridTemplateColumn.Отображаемый вывод показывает все столбцы, заполненные данными из первого столбца для каждой строки.
Если я установлю привязку текста ячейки к {Binding [2] .Text}, во всех столбцах будут показаны данные для 3-го столбца, поэтому я думаю, что мне нужен какой-то способ в шаблоне ячейки, чтобы получить индекс,Я попытался установить привязку к {Binding [{DisplayIndex}]. Text}, но затем я получаю «Ошибка пути BindingExpression: свойство [[] 'не найдено в« объекте »»
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>