【问题标题】:How to set DataGrid Header's font size programatically from code behind如何从后面的代码以编程方式设置 DataGrid Header 字体大小
【发布时间】:2017-08-03 20:08:03
【问题描述】:

我想知道如何以编程方式设置我的DataGridHeader 字体大小,以防我想将我的字体大小保留在数据库中,因为有时用户可能会将应用程序移动到较小的监视器(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>

我换了&lt;Setter Property="FontSize" Value="16"/&gt;

到

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

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

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

【问题讨论】:

    标签: c# wpf binding styling


    【解决方案1】:

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

    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 事件并引发更改通知。

    【讨论】:

    • 当我将 ItemsSource 设置为我的 DataGrid 时,是否也可以这样做,也许我可以在我的班级中再提供一个属性?例如价格、文章名称、电话和字体大小,我可以这样做:Value="{Binding MyFontSize}" ?
    • ItemsSource 中的一项表示 DataGrid 中的一行,但列标题对所有行都是通用的,因此在数据对象中指定标题的字体大小没有多大意义。
    • 如何从我的公共静态 Global 类中为我的 DataGridColumnHeader 设置 FontSize,我在其中保留我的 fontsize 值?
    • 请不要在评论区提问。
    • 对不起,伙计,我认为它相互关联太大,因为当在包含 DataGrid 的 Window 上定义了属性时,您会解释它: Value="{Binding MyFontSize, RelativeSource={RelativeSource AncestorType=Window}} " 但是我想知道如果属性是在 Global static 类的其他地方定义的怎么做.. 但是我可以发布另一个问题,因为我已经为 5 小时苦苦挣扎了:/
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    相关资源
    最近更新 更多