Вы явно устанавливаете CellStyle для этого столбца, что означает, что он не использует неявный стиль DataGridCell, определенный вами в DataGrid.Resources.
Это легко исправить одним из двух способов: либо добавьте эти два установщика выравнивания в стиль для "Ordered Qty", либо, что лучше, используйте атрибут BasedOn
для base , которыйстиль в стиле по умолчанию, который заставит его наследовать все, что имеет стиль по умолчанию:
<DataGridTextColumn.CellStyle>
<Style
TargetType="DataGridCell"
BasedOn="{StaticResource {x:Type DataGridCell}}"
>
<Style.Triggers>
<DataTrigger Binding="{Binding ColorCost}" Value="-1">
Если вы добавите что-то еще в стиль ячейки по умолчанию на следующей неделе, он будет автоматически включен в специализированный стильдля "Заказанного Кол-во".
Обновление: что происходит с выравниванием?
Значение, отображаемое в ячейке, представляет собой текст, который отображается в TextBox или TextBlock.Текст в пределах TextBox или TextBlock по умолчанию выровнен по левому краю.Таким образом, вы должны установить TextBlock.TextAlignment
, который будет унаследован TextBox или TextBlock и заставит его центрировать свой собственный контент.
По умолчанию этот TextBox или TextBlock растягивается, чтобы заполнить всю ширину DataGridCell, потому что именно так DataGridCell делает со своим содержимым.Вам не нужен ни один из этих установщиков HorizontalAlignment.Они излишни.Я бы удалил их по этой причине: мне не нравится оставлять на месте код, запрещающий работу, потому что в следующем году я или кто-то еще вернусь к коду и, возможно, потрачу время на то, чтобы подумать, что он есть по какой-то причине.
В некоторых элементах управления списком, таких как ListBox, содержимое элемента выравнивается по левому краю, и вам может потребоваться установить HorizontalContentAlignment
в ListBox.Это не относится к DataGrid.На самом деле, если вы хотите увидеть что-то странное, попробуйте это для неявного DataGridCellStyle:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
</Style>
</DataGrid.Resources>
Здесь элемент управления, отображающий текст, имеет такую же ширину, как и его содержимое.Он по-прежнему центрирует контент, но вы не можете сказать, потому что нет места с обеих сторон.Также линии выглядят забавно.