WPF глобально разрабатывает TextBlock внутри DataGrid
Я столкнулся с очень странной проблемой. Я пытаюсь применить глобальный стиль к нескольким элементам управления в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>
More Information:
Global styles for any control other thanTextBlock
(TextBox
, ComboBox
, etc.) work properly.
Defining the global style inside the DataTemplate
will work properly.
Directly assigning the style to the TextBlock
using an x:Key
will work.
Global styles for DataGridCell
using TextElement.PROPERTY
will get applied to a TextBlock
.
В то время как некоторые из них будут применять стиль кTextBlock
У них там свои проблемы. Непосредственное назначение стиля или определение стиля где-то в пределахDataGridColumn
будет означать, что мне придется применять стиль более одного раза. С использованиемTextElement.PROPERTY
наDataGridCell
будет применять стиль больше, чем простоTextBlock
контролирует и будет ограничивать количество свойств, которые вы можете установить.