前言:因業務須要對WPF中的DataGrid控件中的行數進行統計,同時把統計的行數顯示在列標題上。spa
若是咱們用常規的Binding手段更新DataGridTextColunm的Header的話是不會生效的,由於WPF中視覺樹中沒有DataGridTextColumn元素來映射它(DataGridTextColumn不是控件,所以它沒有父控件)。code
錯誤示範:blog
<DataGridTextColumn Binding="{Binding Test}" Header="{Binding ColName}"/>
由於視覺樹的機制,咱們只須要把列標題視爲一個控件便可(注:Header屬性會失效,須要初始化Binding的字段):io
<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,把它替換成你的字段名便可。class