Wpf 为什么不是';是否更新了自动宽度的ListView列?

Wpf 为什么不是';是否更新了自动宽度的ListView列?,wpf,listview,layout,Wpf,Listview,Layout,我正在使用一个包含自定义单元格模板的ListView控件来编辑该单元格中的值。当我将一列设置为“自动宽度”时,它将在加载视图时只调整一次列的宽度。但是,当内容发生变化时,宽度永远不会更新,也就是说,文本框控件会随着输入更多文本而扩展 如何说服ListView控件在内容更改时保持其列大小为最新?我的意思是,如果一个自动调整大小的列跟不上,它有什么用呢?这在网格控件中非常有效,而不是在ListView中 我已经创建了一个小的演示应用程序来显示这个问题。您可以在此处下载其源代码:(按Ctrl+S或使用

我正在使用一个包含自定义单元格模板的ListView控件来编辑该单元格中的值。当我将一列设置为“自动宽度”时,它将在加载视图时只调整一次列的宽度。但是,当内容发生变化时,宽度永远不会更新,也就是说,文本框控件会随着输入更多文本而扩展

如何说服ListView控件在内容更改时保持其列大小为最新?我的意思是,如果一个自动调整大小的列跟不上,它有什么用呢?这在网格控件中非常有效,而不是在ListView中

我已经创建了一个小的演示应用程序来显示这个问题。您可以在此处下载其源代码:(按Ctrl+S或使用文件/保存菜单命令下载完整的归档文件)


更改内容时,GridView不会重新计算列宽。看看这篇文章。这可能有用。另一方面,使用DataGrid可能更好,因为它支持开箱即用的编辑。DataGrid不仅看起来臃肿,而且感觉也很臃肿。您需要单击三次以编辑下拉选择中的值。此外,编辑时边框会发生很大变化,整行高度也会随之改变。这并不是一个高质量的用户界面另一篇文章解释了如何调整列的大小,而不是何时调整。我基本上需要在所有可视子对象出现时附加到它们的大小更改事件(在移除它们时分离),以便知道何时调整列的大小。