繁体   English   中英

添加项目时防止 ListView 调整窗口大小 WPF/C#

[英]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属性,不是吗?

10年后...

  1. ListView放在一个灵活的控件中,该控件会随着您调整窗口大小而调整大小,例如,一个Border 这样,当Window调整大小时, Border也会调整大小,而当Border调整大小时, ListView也会调整大小。

  2. 绑定MaxHeight的财产ListViewActualHeight的财产Border 这样, ListView无法调整Border大小。

有关如何实现这一目标的详细信息,请参阅此答案(针对一个实际重复的问题,也大约有 10 年历史): https : //stackoverflow.com/a/68498797/773113

暂无
暂无

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

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