在GridViewColumn里width=”auto”时,发现除了初次加载时起作用之外,DisplMember绑定的内容改变时WIdth并不自动更新。原因是:
The GridView recalculates column content sizes only when the template or internal column collection change, that’s why Width=”Auto” only works on loading the GridView.
翻译的意思大概是
GridView只有当模板或内部列集合的变化时才会更新列内容大小,这就是为什么Width=”auto”只能在加载GridView时触发。
按照字面意思我在每次更新后都新增一个列,然后删除,试图触发width更新,但是都不起作用。
在国外的网站上某大神分享了一个解决办法,解决方法如下
private void changeColumnWidth()
{
var gv = (GridView) lst_filter.View;
foreach (var column in gv.Columns)
{
if (double.IsNaN(column.Width))
{
column.Width = column.ActualWidth;
}
column.Width = double.NaN;
}
}
在绑定的数据更新后调用此函数,发现可以完成width的更新
原文https://stackoverflow.com/questions/560581/how-to-autosize-and-right-align-gridviewcolumn-data-in-wpf