WPF DataGrid标题Header Binding失效

前言:因业务需要对WPF中的DataGrid控件中的行数进行统计,同时把统计的行数显示在列标题上


如果我们用常规的Binding手段更新DataGridTextColunmHeader的话是不会生效的,因为WPF中视觉树没有DataGridTextColumn元素来映射它(DataGridTextColumn不是控件,因此它没有父控件)

错误示范:

<DataGridTextColumn Binding="{Binding Test}" Header="{Binding ColName}"/>

因为视觉树的机制,我们只需要把列标题视为一个控件即可(注:Header属性会失效,需要初始化Binding的字段)

                <DataGridTextColumn Binding="{Binding Test}"Header="列名">
                    <DataGridTextColumn.HeaderTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding DataContext.ColName,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay,
                       RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
                        </DataTemplate>
                    </DataGridTextColumn.HeaderTemplate>
                </DataGridTextColumn>

我Binding的字段名是ColName,把它替换成你的字段名即可。

搬运转发请链接注明出处。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF DataGrid 是一种强大的控件,可以用于在 WPF 应用程序中显示表格数据。DataGrid 可以使用 Binding 数据来绑定到数据源,这使得在 DataGrid 中显示数据变得非常简单。 下面是一个简单的示例,展示如何在 DataGrid 中使用 Binding 数据: 1. 首先,创建一个数据类,用于表示要在 DataGrid 中显示的数据。例如,在此示例中,我们创建一个名为 Person 的类: ```csharp public class Person { public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } } ``` 2. 接下来,在 XAML 中创建一个 DataGrid 控件,并将其绑定到数据源。例如,在此示例中,我们将 DataGrid 绑定到一个名为 people 的 ObservableCollection<Person> 对象: ```xaml <DataGrid ItemsSource="{Binding people}" AutoGenerateColumns="True"/> ``` 3. 最后,在代码中设置 DataContext,并将 people 集合添加到 DataContext 中: ```csharp public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // Create a collection of people ObservableCollection<Person> people = new ObservableCollection<Person>(); people.Add(new Person { Name = "John", Age = 30, Email = "john@example.com" }); people.Add(new Person { Name = "Jane", Age = 25, Email = "jane@example.com" }); people.Add(new Person { Name = "Bob", Age = 40, Email = "bob@example.com" }); // Set the DataContext DataContext = new { people }; } } ``` 现在,当运行应用程序时,将显示一个包含三个人的表格,其中每个人都有一个名称、年龄和电子邮件地址。这些数据将使用 Binding 数据绑定到 DataGrid 中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值