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

时间:2010-05-24 17:49:25

标签: c# wpf listview autosize

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

例如,如果我有三个项目最初绑定到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;
    }
}

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

2 个答案:

答案 0 :(得分:1)

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

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

    column.Width = double.NaN;
}

答案 1 :(得分:0)

不..我想没有更优雅的解决方案