#wpf #xaml
#wpf #xaml
Вопрос:
У меня есть DataGridTextColumn, и я хотел установить текст посередине, я сделал это XAML :
<DataGridTextColumn Header="Smooth" Binding="{Binding Smoothing}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBox">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
Это сработало нормально. У меня много DataGridTextColumn, поэтому я хотел извлечь стиль как ресурс. Который выглядит как :
<UserControl.Resources>
<Style TargetType="TextBox" x:Key="TextBoxStyle">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</UserControl.Resources>
и я делаю это для своего GridItem :
<DataGridTextColumn Header="Smooth" Binding="{Binding Smoothing}" ElementStyle="{StaticResource ResourceKey=TextBoxStyle}"/>
Я на самом деле получаю сбой, жалуясь при проверке TargetType. Есть идеи, почему первые части работают, но не вторая часть?
Спасибо
Комментарии:
1. какой сбой? Вы получаете сообщение об ошибке? Время компиляции или время выполнения?
2. Кажется, что если я использую TextBlock вместо TextBox, это работает лучше.
Ответ №1:
Ваш DataGridTextColumn.ElementStyle
должен быть нацелен на a TextBlock
, а НЕ TextBox
.
<Style TargetType="TextBlock" x:Key="TextBlockStyle">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
Ваш DataGridTextColumn.EditingElementStyle
должен быть тем, который нацелен на a TextBox
(если ваша таблица данных или столбец доступны для редактирования)
(Просто потому, что в текстовой ячейке, доступной только для чтения, есть текстовый блок, а в текстовой ячейке в режиме редактирования есть текстовое поле)
Комментарии:
1. Спасибо @AngelWPF. Просто измените VerticalContentAlignment на VerticalAlignment 🙂