前言:因業務需要對WPF中的DataGrid控制項中的行數進行統計,同時把統計的行數顯示在列標題上。 如果我們用常規的Binding手段更新DataGridTextColunm的Header的話是不會生效的,因為WPF中視覺樹中沒有DataGridTextColumn元素來映射它(DataGridTe ...
前言:因業務需要對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,把它替換成你的欄位名即可。