WPF estilo globalmente um TextBlock dentro de um DataGrid
Eu estou encontrando um problema muito estranho. Eu estou tentando aplicar estilo global a vários controles dentro de umDataGrid
. A maioria deles trabalha exatamente como eu esperaria. No entanto, o estilo para oTextBlock
nunca é aplicado. Estilos paraComboBox
, TextBox
, Label
, e vários outros estão sendo aplicados aos seus respectivos controles, mas não oTextBlock
. Eu simplifiquei o código tanto quanto possível e o problema ainda está presente. Eu forneci o exemplo de código abaixo.
Preciso que o estilo seja aplicado aoTextBlock
e eu não quero ter que aplicá-lo manualmente aoTextBlock
.
<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>
Mais Informações:
Estilos globais para qualquer controle que não sejaTextBlock
(TextBox
, ComboBox
, etc.) funcionam corretamente.Definindo o estilo global dentro doDataTemplate
irá funcionar corretamente.Atribuindo diretamente o estilo aoTextBlock
usando umx:Key
vai funcionar.Estilos globais paraDataGridCell
usandoTextElement.PROPERTY
será aplicada a umTextBlock
.Enquanto alguns deles obterão o estilo aplicado aoTextBlock
, eles têm problemas próprios. Atribuindo diretamente o estilo ou definindo o estilo em algum lugar dentro de umDataGridColumn
significará que terei que aplicar o estilo mais de uma vez. Usando oTextElement.PROPERTY
noDataGridCell
vai aplicar o estilo a mais do que apenasTextBlock
controles e limitará o número de propriedades que você pode definir.