我在WPF中有一个ListView,每当我向其中添加项目时,整个应用程序窗口都会调整大小。我将ListView的大小绑定到它所在的网格上,该网格又绑定到窗口大小上。因此,当用户调整窗口大小时,ListView会增长。问题是,当我向ListView添加项目时,它会自动拉伸以尝试适应新内容,这反过来会拉伸整个窗口的大小。
有没有办法防止发生这种行为?
有没有办法防止发生这种行为?
将窗口的SizeToContent属性更改为Manual或Width(不应该有Height)。这将防止窗口根据内容自动更改其高度。
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;
您想将VerticalAlignment
属性设置为'Stretch
'。如果需要,在父控件中也要这样做,以此类推,直到您在Window控件中。
但是请注意,如果上行的控件之一是StackPanel
,它将不会拉伸以适应,而是始终扩展以容纳其内容。因此,请远离StackPanels
,使用Stretch
,然后您就可以了!
还要删除绑定,它们很可能是双向的:因此,列表视图增加其大小会使窗口增大!
希望这有所帮助!
你尝试设置MaxWidth属性了吗?
你可以在XAML中设置ListView
的MaxHeight
属性,不是吗?
将 ListView
放在一个灵活的控件内,例如一个 Border
,这样当 Window
调整大小时,Border
也会调整大小,而当 Border
调整大小时,ListView
也会调整大小。
将 ListView
的 MaxHeight
属性绑定到 Border
的 ActualHeight
属性。这样,ListView
就无法调整 Border
的大小。
有关如何实现此操作的详细信息,请参见此答案(针对一个几乎相同的问题,也是10年前的):https://dev59.com/MVDTa4cB1Zd3GeqPI2vH#68498797