我有一个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时,我实际上遇到了崩溃的抱怨。任何想法为什么第一部分工作但不是第二部分?
由于
答案 0 :(得分:2)
您的DataGridTextColumn.ElementStyle
应定位到TextBlock
和 NOT TextBox
。
<Style TargetType="TextBlock" x:Key="TextBlockStyle">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
您的 DataGridTextColumn.EditingElementStyle
应该定位TextBox
(如果您的数据网格或列可编辑)
(仅仅因为只读文本单元格有TextBlock,编辑模式下的文本单元格中有一个TextBox)