私は非常に奇妙な問題に遭遇しています。内のいくつかのコントロールにグローバル スタイルを適用しようとしていますDataGrid。それらのほとんどは、私が期待するとおりに機能します。ただし、 のスタイリングTextBlockは適用されません。、、、および他のいくつかのスタイルはすべてComboBox、それぞれのコントロールに適用されますが、. コードを可能な限り単純化しましたが、問題はまだ存在しています。以下にコードサンプルを提供しました。TextBoxLabelTextBlock
スタイルを に適用する必要があり、TextBlockに手動で適用する必要はありませんTextBlock。
<DataGrid ItemsSource="{Binding Data}" AutoGenerateColumns="False">
<DataGrid.Resources>
<Style TargetType="TextBlock">
<Setter Property="ANY_TEXTBLOCK_PROPERTY" Value="VALUE" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Test">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Globably Applied" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
詳しくは:
TextBlock(TextBox、など)以外のコントロールのグローバル スタイルはComboBox正しく機能します。- 内でグローバル スタイルを定義すると、
DataTemplate適切に機能します。 TextBlockを使用してにスタイルを直接割り当てると機能しx:Keyます。DataGridCell使用するグローバル スタイルTextElement.PROPERTYが に適用されますTextBlock。
これらの一部は に適用されるスタイルを取得しますTextBlockが、独自の問題があります。スタイルを直接割り当てたり、 内のどこかでスタイルを定義したりすると、DataGridColumnそのスタイルを複数回適用する必要があります。でを使用すると、スタイルがコントロール以外にも適用され、TextElement.PROPERTY設定できるプロパティの数が制限されます。DataGridCellTextBlock