我遇到一个很奇怪的问题。 我想一个全球范围内的造型适用于几个控件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
控制,并将于限制,你可以设置属性的数量。