我有一个我试图应用到 DataGrid 的样式,但它只有在我给它一个键并明确说要使用它的情况下才有效。
<Application ...>
<Application.Resources>
<Style TargetType="{x:Type Control}" x:Key="ErrorStyle">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right"
Foreground="Orange"
FontSize="12pt">
!!!!
</TextBlock>
<Border BorderBrush="Green" BorderThickness="1">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="TextBox" BasedOn="{StaticResource ErrorStyle}" />
<Style TargetType="Label" BasedOn="{StaticResource ErrorStyle}" />
<Style TargetType="Button" BasedOn="{StaticResource ErrorStyle}" />
<Style TargetType="DataGrid" BasedOn="{StaticResource ErrorStyle}" />
</Application.Resources>
</Application>
以上适用于我的应用程序中的所有文本框、标签、按钮。但它不适用于 DataGrids。因此,我将 DataGrids 样式更改为:
<Style TargetType="DataGrid" BasedOn="{StaticResource ErrorStyle}" x:Key="DataGridErrorStyle" />
然后像这样显式地将它添加到我的 DataGrids
<DataGrid Name="myGrid" Style="{StaticResource ResourceKey=DataGridErrorStyle}" />
然后一切正常。
我只是想知道是否有人知道为什么 DataGrid 不会使用定义的隐式样式?为什么它需要显式样式?