Bry*_*tts 12 wpf wpfdatagrid c#-4.0
我遇到了一个非常奇怪的问题.我正在尝试将全局样式应用于a中的几个控件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>
Run Code Online (Sandbox Code Playgroud)
更多信息:
TextBlock(TextBox,ComboBox,等)的正常工作.DataTemplate将正常工作.TextBlock使用x:Key将工作.DataGridCell使用样式TextElement.PROPERTY将应用于TextBlock.虽然其中一些将适用于该风格TextBlock,但它们有自己的问题.直接指定样式或在a中某处定义样式DataGridColumn意味着我将不止一次地应用样式.使用TextElement.PROPERTYon DataGridCell将将样式应用于不仅仅是TextBlock控件,并将限制您可以设置的属性数.
因此,通过更多的挖掘和一点运气,我发现WPF不会在模板中应用隐式样式,除非TargetType派生自Control.由于TextBlock不是源自Control,其风格不适用.因此,您必须手动将样式应用于每个非样式Control或定义模板内的隐式样式.
以下MSDN博客文章非常详细地解释了它.
| 归档时间: |
|
| 查看次数: |
6900 次 |
| 最近记录: |