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

时间:2010-06-26 22:48:49

标签: c# wpf listview

我在WPF中有一个ListView,它会在我向其添加项目时调整整个应用程序窗口的大小。我将ListView大小绑定到它所在的网格,它绑定到窗口大小。因此,当用户调整窗口大小时,ListView会增长。问题是,当我向ListView添加项目时,它会自动拉伸以尝试适应新内容,这又会拉伸整个窗口的大小。

有没有阻止这种行为发生?

6 个答案:

答案 0 :(得分:4)

将窗口的SizeToContent更改为手动或宽度(不应存在高度)。这样可以防止窗口本身根据内容自动改变其高度。

答案 1 :(得分:1)

您想将VerticalAlignment属性设置为“Stretch”。如有必要,也可以在父控件中,依此类推,直到您进入Window控件。

需要注意的是,如果上升中的一个控件是StackPanel,则它不会伸展以适应,但总是会扩展以适应其内容。所以请远离StackPanels,使用Stretch,然后设置好!

删除你的Bindings,它们很可能是TwoWay:所以listview增加它的大小会让你的窗口增长!

希望有所帮助!

答案 2 :(得分:1)

您可以使用以下代码。

首先获取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;

答案 3 :(得分:0)

您是否尝试过设置MaxWidth属性?

答案 4 :(得分:0)

您可以在xaml中为MaxHeight设置ListView属性,不是吗?

答案 5 :(得分:0)

10 年后...

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

  2. MaxHeightListView 属性绑定到 ActualHeightBorder 属性。这样,ListView 就无法调整 Border 的大小。

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