首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通知当GridViewColumn更改其ActualWidth时

通知当GridViewColumn更改其ActualWidth时
EN

Stack Overflow用户
提问于 2015-01-09 16:52:15
回答 1查看 775关注 0票数 1

我试图用三列制作一个表,中间的列会自动填充可用的水平空间。

因此,我听取LoadedSizeChanged事件(用于调整表的大小),并根据简单的计算来分配宽度:

代码语言:javascript
复制
private void table_Resize(ListView listView)
{
    var _ActualWidth = listView.ActualWidth - gridSplitter.Width - 5;
    GridView _GridView = listView.View as GridView;

    for (Int32 i = 0; i < _GridView.Columns.Count; i++)
    {
        if (i == 1) continue;
        _ActualWidth -= _GridView.Columns[i].ActualWidth;
    }
    if (_ActualWidth > 0)
    {
        _GridView.Columns[1].Width = _ActualWidth;
    }
}

问题是,当数据被添加到基础ListView中时,这会迫使一个列更改其宽度。

我想,我需要在更改(增加) ActualWidth时通知我的程序,以便能够相应地重新计算列宽。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-09 21:07:34

您的子类解决方案将无法工作。首先,ActualWidth不是虚拟的afaik,其次,ActualWidthprivate设置器。如果您检查GridViewColumn源代码,您将看到它已经在引发通知。

你可以这样做:

代码语言:javascript
复制
myColumns[i].PropertyChanged += (sender, e) => {
  if(e.PropertyName == "ActualWidth"){
    // do something here..
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27865359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档