如何从代码隐藏以编程方式设置 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
事件并引发更改通知。
我想知道如何以编程方式设置我的 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
事件并引发更改通知。