私は非常に奇妙な問題に遭遇しています。内のいくつかのコントロールにグローバル スタイルを適用しようとしていますDataGrid
。それらのほとんどは、私が期待するとおりに機能します。ただし、 のスタイリングTextBlock
は適用されません。、、、および他のいくつかのスタイルはすべてComboBox
、それぞれのコントロールに適用されますが、. コードを可能な限り単純化しましたが、問題はまだ存在しています。以下にコードサンプルを提供しました。TextBox
Label
TextBlock
スタイルを に適用する必要があり、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
設定できるプロパティの数が制限されます。DataGridCell
TextBlock