所以我试图覆盖 ResourceDictionary 中定义的模板中的默认值。默认对齐方式是左对齐,但我希望左列标题右对齐,右列标题左对齐。其余数据对齐良好。
目前,这就是我所拥有的:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../Controls/CustomDataGrid.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="CellTextStyleR" TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="TextAlignment" Value="Right"/>
<Setter Property="Margin" Value="2,0,5,0"/>
</Style>
<Style x:Key="CellTextStyleL" TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="TextAlignment" Value="Left"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
<Style x:Key="HeaderRight" TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource DataGridColumnHeaderStyle}">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
<Setter Property="Margin" Value="2,0,5,0"/>
</Style>
<Style x:Key="HeaderLeft" TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource DataGridColumnHeaderStyle}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<DataGrid Grid.Row="0" Grid.Column="1" Style="{StaticResource CustomDataGridStyle}" ItemsSource="{Binding InputDataCollection}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Input Name" Binding="{Binding Name}" Width="50*" ElementStyle="{StaticResource CellTextStyleR}" HeaderStyle="{StaticResource HeaderRight}"/>
<DataGridTextColumn Header="Input State" Binding="{Binding State}" Width="50*" ElementStyle="{StaticResource CellTextStyleL}" HeaderStyle="{StaticResource HeaderLeft}"/>
</DataGrid.Columns>
</DataGrid>
相反,列文本保持左对齐。
我也尝试过直接在数据网格中定义,但这只会杀死所有格式......
有没有办法只覆盖对齐和边距,而不杀死所有其他格式?
提前谢谢你的帮助!