wpf 字体大小不适用于数据网格列标题
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16392436/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Font size not applied to datagrid columnheader
提问by deathrace
I have a wpf datagrid in which I am adding all the columns and style through C#.
我有一个 wpf 数据网格,我在其中通过 C# 添加了所有列和样式。
I have applied ColumnHeaderStyle as follows:
我已应用 ColumnHeaderStyle 如下:
written setter as :
var fontSizeSetter = new Setter {Property = Control.FontSizeProperty, Value = Convert.ToDouble(font.Size)};Style as:
var headerStyle = new Style(); headerStyle.Setters.Add(fontSetter); headerStyle.Setters.Add(fontSizeSetter); headerStyle.Setters.Add(fontStyleSetter); headerStyle.Setters.Add(fontWeightSetter);Applied it to my
Datagrid'sColumnHeaderStyle as:
写二传手为:
var fontSizeSetter = new Setter {Property = Control.FontSizeProperty, Value = Convert.ToDouble(font.Size)};风格为:
var headerStyle = new Style(); headerStyle.Setters.Add(fontSetter); headerStyle.Setters.Add(fontSizeSetter); headerStyle.Setters.Add(fontStyleSetter); headerStyle.Setters.Add(fontWeightSetter);将它应用到我的
Datagrid'sColumnHeaderStyle 作为:
view.DataGrid.ColumnHeaderStyle = headerStyle;
view.DataGrid.ColumnHeaderStyle = headerStyle;
Current problem:
now, when I set FontFamily& FontStyleit gets applied. but column Header textsizeremains same. It does not get updated.

当前问题:现在,当我设置FontFamily和FontStyle 时,它会被应用。但列标题文本大小保持不变。它不会更新。

Entire Method:
整个方法:
private static void ConfigureFontsForDataGrid(Views.StatusMonitor view, StatusMonitorAgencyFontType font)
{
var fontfamily = new FontFamily(font.Font);
var fontSetter = new Setter { Property = Control.FontFamilyProperty, Value = fontfamily };
var fontSizeSetter = new Setter { Property = Control.FontSizeProperty, Value = Convert.ToDouble(font.Size) };
var fontStyleSetter = new Setter { Property = Control.FontStyleProperty };
var fontWeightSetter = new Setter { Property = Control.FontWeightProperty };
// Defaults
fontWeightSetter.Value = FontWeights.Regular;
fontStyleSetter.Value = FontStyles.Normal;
switch (font.Style)
{
case "Regular":
fontWeightSetter.Value = FontWeights.Regular;
fontStyleSetter.Value = FontStyles.Normal;
break;
case "Bold Italic":
fontWeightSetter.Value = FontWeights.Bold;
fontStyleSetter.Value = FontStyles.Italic;
break;
}
//Configuring data grid cell font
view.DataGrid.CellStyle.Setters.Add(fontSetter);
view.DataGrid.CellStyle.Setters.Add(fontSizeSetter);
view.DataGrid.CellStyle.Setters.Add(fontStyleSetter);
view.DataGrid.CellStyle.Setters.Add(fontWeightSetter);
//Configuring data grid column header font
view.DataGrid.ColumnHeaderStyle.Setters.Add(fontSetter);
view.DataGrid.ColumnHeaderStyle.Setters.Add(fontSizeSetter);
view.DataGrid.ColumnHeaderStyle.Setters.Add(fontStyleSetter);
view.DataGrid.ColumnHeaderStyle.Setters.Add(fontWeightSetter);
}
采纳答案by deathrace
I wrote following data template in my datagrid resources. It works.
我在我的数据网格资源中编写了以下数据模板。有用。
<DataTemplate DataType="{x:Type System:String}">
<TextBlock Text="{Binding}">
<TextBlock.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontFamily" Value="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=FontFamily}" />
<Setter Property="FontSize" Value="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=FontSize}" />
<Setter Property="FontStyle" Value="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=FontStyle}"/>
<Setter Property="FontWeight" Value="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=FontWeight}"/>
</Style>
</TextBlock.Resources>
</TextBlock>
</DataTemplate>
回答by Neeraj Dubey
Use this code to resize font of Column Header in Datagrid:
使用此代码调整 Datagrid 中列标题的字体大小:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="FontSize" Value="10"/>
</Style>
回答by RonakThakkar
Can you try below code.
你可以试试下面的代码。
var headerStyle = new Style();
Setter fontSetter = new Setter { Property = Control.FontFamilyProperty, Value = new FontFamily("Calibri") };
headerStyle.Setters.Add(fontSetter);
Setter fontSizeSetter = new Setter { Property = Control.FontSizeProperty, Value = Convert.ToDouble(20) };
headerStyle.Setters.Add(fontSizeSetter);
Setter fontStyleSetter = new Setter { Property = Control.FontStyleProperty, Value = FontStyles.Italic };
headerStyle.Setters.Add(fontStyleSetter);
Setter fontWeightSetter = new Setter { Property = Control.FontWeightProperty, Value = FontWeights.Bold };
headerStyle.Setters.Add(fontWeightSetter);
myGrid.ColumnHeaderStyle = headerStyle;

