#c# #wpf #datagrid
#c# #wpf #сетка данных
Вопрос:
У меня есть сетка данных, ItemsSource
свойство которой привязано к свойству в моей viewmodel. Это свойство представляет собой список объектов и динамически устанавливается после нажатия кнопки, при этом элементы в сетке данных заполняются правильно, а столбцы генерируются автоматически. Однако содержимое ячеек выровнено по верхнему левому краю, и все найденные мной решения «Как центрировать содержимое ячейки DataGrid» предназначены только для DataGrid с предопределенными вручную столбцами, в то время как мои генерируются на основе свойств класса, к которому принадлежат объекты в свойстве.
Как центрировать содержимое ячейки сетки данных, когда столбцы автоматически генерируются на основе свойств класса загруженных в него объектов?
Ответ №1:
Для настройки столбца можно использовать событие AutoGeneratingColumn.
Ответ №2:
Вы можете создать ElementStyle
либо в своей разметке XAML, либо программно, а затем обработать AutoGeneratingColumn
событие для DataGrid
:
public partial class Window1 : Window
{
private static readonly Style s_elementStyle;
static Window1()
{
const string Xaml = "<Style xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" TargetType="TextBlock">"
"<Setter Property="HorizontalAlignment" Value="Center" />"
"<Setter Property="VerticalAlignment" Value="Center" />"
"</Style>";
s_elementStyle = XamlReader.Parse(Xaml) as Style;
}
public Window1()
{
InitializeComponent();
dataGrid.AutoGeneratingColumn = dg_AutoGeneratingColumn
}
private void dg_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.Column is DataGridTextColumn textColumn)
textColumn.ElementStyle = s_elementStyle;
}
}