为什么当我使用它作为资源时它会崩溃?

时间:2011-10-04 13:00:32

标签: 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 个答案:

答案 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)