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

时间:2017-03-13 17:34:18

标签: c# wpf binding styling

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

这是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="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的值添加到我的代码背后呢?

1 个答案:

答案 0 :(得分:1)

例如,您可以在窗口中添加double属性:

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>

请注意,如果您希望能够在运行时动态更改源属性的值,则窗口类(或您选择实现该属性的任何位置)应实现INotifyPropertyChanged事件并引发更改通知。