ListView中GridViewColumn中Width="auto"无效的原因

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

话与山鬼听

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值