Я встречаюсь с очень странной проблемой. Я пытаюсь применить глобальный стиль к нескольким элементам управления в пределах 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
и ограничит количество свойств, которые вы можете установить.