Patrick Skelton Ответов: 1

Как центрировать текст в заголовке столбца datagridtextcolumn?


У меня есть DataGrid в которой я создаю свои собственные столбцы в XAML. Я пытаюсь центрировать текст в одном из заголовков столбцов, используя следующий XAML:
<DataGridTextColumn Header="Name"
	Binding="{Binding Name}"
	Width="180" CanUserResize="False">
	<DataGridTextColumn.HeaderStyle>
		<Style TargetType="{x:Type DataGridColumnHeader}">
			<Setter Property="HorizontalAlignment" Value="Center"/>
		</Style>
	</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>

Это действительно центрирует текст, но ширина заголовка установлена на "авто", под которым я подразумеваю, что он достаточно широк, чтобы содержать текст " имя " в заголовке. Я вижу это, когда навожу курсор на заголовок: подсветка охватывает только слово "имя", а не весь заголовок столбца.

Поэтому я подумал, что это будет просто случай установки ширины заголовка явно в его стиле, чтобы он соответствовал ширине столбца, например:
<DataGridTextColumn Header="Name"
	Binding="{Binding Name}"
	Width="180" CanUserResize="False">
	<DataGridTextColumn.HeaderStyle>
		<Style TargetType="{x:Type DataGridColumnHeader}">
			<Setter Property="HorizontalAlignment" Value="Center"/>
			<Setter Property="Width" Value="180"/>
		</Style>
	</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>

Теперь это действительно устанавливает ширину заголовка, но теперь мой HorizontalAlignment игнорируется, и текст перемещается обратно влево.

Почему я не могу этого сделать? Кто-нибудь знает, как это исправить?

Что я уже пробовал:

Я также экспериментировал с HorizontalAlignment от Stretch, но это оставляет текст выровненным по левому краю.

1 Ответов

Рейтинг:
2

Gerry Schmitz

Установите "заголовок" напрямую (это элемент управления "содержимое" ):

<DataGridTextColumn>
   <DataGridTextColumn.Header>
      <TextBlock Text="Name"
                 HorizontalAlignment="Stretch"
                 TextAlignment="Center" />
   </DataGridTextColumn.Header>
</DataGridTextColumn>


Patrick Skelton

Спасибо за ответ. Это интересный момент, который я упустил из виду, но он, похоже, не решает проблему для меня. Текст всегда выравнивается по левому краю, когда я применяю растяжку к текстовому блоку.

Может быть, мне следует опубликовать весь свой XAML для этой части окна. Может быть, что-то, что я делаю выше по визуальному дереву, ломает вещи.

laurrylf

&ЛТ;datagridtextcolumn.headerstyle&ГТ;

&ЛТ;сеттер собственности="HorizontalContentAlignment" значение="растянуть"/&ГТ;

Patrick Skelton

Спасибо за ответ. Я попробую, когда вернусь к этой части проекта.