如何从代码隐藏以编程方式设置 DataGrid Header 的字体大小

How to set DataGrid Header's font size programatically from code behind

我想知道如何以编程方式设置我的 DataGrid Header 字体大小,以防我想将我的字体大小保留在数据库中,因为有时用户可能会将应用程序移动到更小的显示器(1024x768)让我们说,只要他可以编辑他的字体大小,一切都会好起来的。

这是 Style 我现在正在使用它来设计我的 header:

<Style TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="Background" Value="#0091EA"/>
    <Setter Property="Opacity" Value="1"/>
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="FontSize" Value="16"/>
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="Height" Value="40"/>
</Style>

那么,如果我愿意,我该如何从代码中设置这些属性呢

我可以这样简单地做吗:

<Style TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="Background" Value="#0091EA"/>
    <Setter Property="Opacity" Value="1"/>
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="FontSize" Value="{Binding FontSize}"/>
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="Height" Value="40"/>
</Style>

我改了<Setter Property="FontSize" Value="16"/>

<Setter Property="FontSize" Value="{Binding FontSize}"/>

Value="{Binding FontSize}" //is new

那么我如何才能为这个 FontSize 添加价值,使其成为我的代码背后的东西?

例如,您可以将双 属性 添加到 window:

public partial class MainWindow : Window
{
    public double MyFontSize { get; set; } = 30;

    public MainWindow()
    {
        InitializeComponent();
    }
}

<Window.Resources>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="Background" Value="#0091EA"/>
        <Setter Property="Opacity" Value="1"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="FontSize" Value="{Binding MyFontSize, RelativeSource={RelativeSource AncestorType=Window}}"/>
        <Setter Property="FontFamily" Value="Arial"/>
        <Setter Property="Height" Value="40"/>
    </Style
</Window.Resources>

请注意,如果您希望能够在运行时动态更改源 属性 的值,window class(或您选择实现 属性) 应该实施 INotifyPropertyChanged 事件并引发更改通知。