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>
上記は、アプリケーション内のすべてのテキストボックス、ラベル、ボタンで機能します。ただし、DataGridでは機能しません。そこで、DataGridsスタイルを次のように変更しました。
<Style TargetType="DataGrid" BasedOn="{StaticResource ErrorStyle}" x:Key="DataGridErrorStyle" />
そして、それを私のDataGridsに明示的に追加します。
<DataGrid Name="myGrid" Style="{StaticResource ResourceKey=DataGridErrorStyle}" />
その後、すべて正常に動作します。
DataGridが定義された暗黙のスタイルを使用しない理由を誰かが知っているかどうか疑問に思っていますか?なぜ明示的なスタイリングが必要なのですか?