[英]Prevent ListView from Resizing Window When Adding Items WPF/C#
我在 WPF 中有一个 ListView,每当我向其中添加项目时,它都会调整整个应用程序窗口的大小。 我将 ListView 大小绑定到它所在的网格,它绑定到窗口大小。 所以当用户调整窗口大小时,ListView 会增长。 问题是,当我向 ListView 添加项目时,它会自动拉伸以尝试适应新内容,从而拉伸整个窗口的大小。
有没有办法阻止这种行为的发生?
将窗口的 SizeToContent 更改为 Manual 或 Width(不应有 Height)。 这将防止窗口本身根据内容自动更改其高度。
您想将VerticalAlignment
属性设置为“ Stretch
”。 如有必要,在父控件中也如此,依此类推,直到您在 Window 控件中。
需要注意的是,如果向上的控件之一是StackPanel
,则它不会拉伸以适应,但始终会扩展以容纳其内容。 所以远离StackPanels
,使用Stretch
,你就准备好了!
也删除你的绑定,它们可能是双向的:所以增加其大小的列表视图会使你的窗口增长!
希望有帮助!
您可以使用以下代码。
首先获取listview onload 的值。 然后将其存储在一个变量中,然后在 ColumnWidthChanging 事件属性中执行此代码,如下所示:
e.cancel = true;
e.NewWidth = // the declared variable in which you store the list view with value in the onload function of the form
int a = 100;
e.cancel =true;
e.NewWidth = a;
您是否尝试过设置 MaxWidth 属性?
您可以在 xaml 中为ListView
设置MaxHeight
属性,不是吗?
将ListView
放在一个灵活的控件中,该控件会随着您调整窗口大小而调整大小,例如,一个Border
。 这样,当Window
调整大小时, Border
也会调整大小,而当Border
调整大小时, ListView
也会调整大小。
绑定MaxHeight
的财产ListView
到ActualHeight
的财产Border
。 这样, ListView
无法调整Border
大小。
有关如何实现这一目标的详细信息,请参阅此答案(针对一个实际重复的问题,也大约有 10 年历史): https : //stackoverflow.com/a/68498797/773113
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.