Я пытаюсь центрировать текст в ячейках для SfDataGrid в UWP.Столбцы связываются во время выполнения, поэтому я не могу установить стиль ячейки для элементов столбца.
xaml для сетки выглядит так:
<grid:SfDataGrid Name="GridData"
AlternatingRowStyle="{StaticResource mainTableRowStyle}"
RowStyle="{StaticResource mainTableRowStyle}"
HeaderStyle="{StaticResource headerStyle}"
Foreground="WhiteSmoke"
framework:FocusExtension.IsFocused="{Binding Focused}"
AllowSelectionOnPointerPressed="True"
Grid.Row="0"
Columns="{Binding SfGridColumns, Mode=TwoWay}"
AutoGenerateColumns="True"
IsDynamicItemsSource="True"
ItemsSource="{Binding ElementName=dataPager,Path=PagedSource}"
ColumnSizer="Star"
AllowSorting="False"
SelectedItem="{Binding SelectedGridItem, Mode =TwoWay, UpdateSourceTrigger=PropertyChanged}">
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Holding">
<core:InvokeCommandAction Command="{Binding HoldCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</grid:SfDataGrid>
Я попытался добавить стиль вячейки для выравнивания текста:
<Style x:Key="cellStyle" TargetType="grid:GridCell">
<Setter Property="FontSize" Value="20" />
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Bold" />
</Style>
<!-- CellStyle="{StaticResource cellStyle}" -->
Но это не помогает, потому что это центрирует всю ячейку, и внутренние границы сетки нарушаются.(выглядит примерно так, как показано на рисунке ниже)
Я хочу, чтобы текст внутри ячейки был выровнен.(также пробовал центр HorizontalContentAlignment, он ничего не делал)
Наконец, я попытался переписать шаблон ячейки.SfDataGrid не имеет свойства CellTemplate, но имеет свойство GridCellTemplateSelector.Итак, я создал такой шаблон:
<framework:GridCellTemplateSelector x:Key="templateSelector"/>
<DataTemplate x:Key="CellTemplate1">
<TextBlock Foreground="DarkBlue" Text="{Binding}" HorizontalAlignment="Center"/>
</DataTemplate> <!-- and added CellTemplateSelector="{StaticResource templateSelector}" to the grid -->
public class GridCellTemplateSelector : DataTemplateSelector
{
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
return Application.Current.Resources["CellTemplate1"] as DataTemplate;
}
}
Этот шаблон также не работает, потому что кажется, что метод в GridCellTemplateSelector не используется.Я думаю, что если бы я мог заставить работать CellTemplateSelector, я бы достиг своей цели.