前言:因業務需要對WPF中的DataGrid控件中的行數進行統計,同時把統計的行數顯示在列標題上。
如果我們用常規的Binding手段更新DataGridTextColunm的Header的話是不會生效的,因為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,把它替換成你的字段名即可。
搬運轉發請鏈接注明出處。