繁体   English   中英

在WPF中使用ListView是否有一种优雅的方法来自动调整项目大小?

[英]In WPF using a ListView is there an elegant way to auto resize items?

最近,我写了我的第一个WPF应用程序,其中包含从Web服务轮询的项目列表。 这些项目通过GridView在ListView中显示/数据绑定。 后台线程定期轮询Web服务并更新列表。

如果说,如果我最初绑定到ListView的三个项目只是显示一个描述和这三个描述,例如:

- ProjectA
- ProjectB
- ProjectC

后来添加了一个新项目,并带有“ AReallyReallyLongProjectName”的描述,我最终得到的列表如下:

- ProjectA
- ProjectB
- ProjectC
- AReallyR

GridViewColumn不会更新其宽度,并且随后会删除所有扩展原始宽度的新项目。

我添加了这段代码来强制调整列的大小,但这似乎有点hacky。 (设置一个宽度只是将其设置回零以强制调整大小似乎很奇怪)

if(gridView != null) {
    foreach(var column in gridView.Columns) {
        if (double.IsNaN(column.Width) column.Width = column.ActualWidth;
        column.Width = double.NaN;
    }
}

是否有更好,更优雅的解决方案来完成同一件事?

是一种方法。 另一种方法是每次列表中的项目更新时手动重置列宽:

private void ResizeGridViewColumn(GridViewColumn column)
{
    if (double.IsNaN(column.Width))
    {
        column.Width = column.ActualWidth;
    }

    column.Width = double.NaN;
}

不。我想没有更好的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM