【问题标题】:How to prevent the change of the height and width of the listbox at runtime如何防止在运行时改变列表框的高度和宽度
【发布时间】:2014-08-31 15:02:30
【问题描述】:

在主窗口中,我有一个网格,其中有一个列表框和内容控件可用。

我已将窗口的 SizeToContent 属性设置为“WidthAndHeight”,并且窗口可以调整大小。

列表框有不同的控件名称作为项目,在选择列表框中的项目时,内容控件将填充相应的用户控件。

我有不同尺寸的控件,其中一些很小,而另一些则很大。因为我已将 SizeToContent 属性设置为“WidthAndHeight”。用户控件适配,即窗口会通过适配用户控件来动态改变宽度和高度。

现在的问题是 - 在我的一个控件中,我有 "ListBox" ,它根据列表框的内容(正在从数据库中获取数据)更改其高度和宽度,而不会出现水平和垂直滚动条。如何制止这种行为?

我正在寻找解决列表框行为的解决方案,它会增加列表框的高度和宽度,应该出现水平和垂直滚动条。

请尽快回复。

忘了几点,在加载第一个加载的控件后,我将 SizeToContent 设置为“手动”。 但是在加载第二个大控件时,控件不适合窗口的现有空间。

最初,当窗口被加载时,第一个控件会出现,它的尺寸很小。 现在,当我尝试加载与第一个控件相比尺寸非常大的第二个控件时 如下图控件加载完成后出现滚动条,不可接受。

当我将窗口的 SizeToContent 属性设置为 WidthAndHeight 时,第一个控件非常适合, 加载窗口后,将更改为 Manual 一次。

【问题讨论】:

  • 忘了几点,加载第一个控件后,我将 SizeToContent 设置为“手动”。但是在加载第二个大控件时,控件不适合窗口的现有空间。
  • 你能发布一些屏幕吗?你所面临的和你想要的
  • 忘记几点...好吧,不要把它们放在容易错过的cmets中。编辑您的问题并将您忘记的要点放在那里。
  • 我已经更新了我的帖子,增加了一些分数。

标签: wpf wpf-controls wpftoolkit wpf-4.0


【解决方案1】:

要阻止ListBox 根据其内容调整大小,只需约束其WidthHeight。您可以将其放入具有特定 RowDefinitions 和 ColumnDefinitions 的 Grid 中,或者直接设置 ListBox.WidthListBox.Height 属性:

<ListBox ItemsSource="{Binding Items}" Width="400" Height="800" />

或者,您始终可以设置 ListBox.MaxWidthListBox.MaxHeight 属性:

<ListBox ItemsSource="{Binding Items}" MaxWidth="400" MaxHeight="800" />

一旦内容大于这些最大值,ScrollBars 应该会自动出现,但您也可以使用 ScrollViewer.VerticalScrollBarVisibilityScrollViewer.HorizontalScrollBarVisibility 属性显式设置它们:

<ListBox ScrollViewer.VerticalScrollBarVisibility="Visible" 
    ScrollViewer.HorizontalScrollBarVisibility="Visible" ... />

【讨论】:

  • 我们尝试了所有这些。确切的情况是 - 最初,当加载窗口时,将出现第一个尺寸较小的控件。现在,当我尝试加载与第一个控件相比尺寸非常大的第二个控件时,如下所示,控件已加载,但出现了一个不可接受的滚动条。第一个控件非常适合,因为我将窗口的 SizeToContent 属性设置为 WidthAndHeight,在加载窗口后将其更改为 Manual。最大宽度和高度不适合我们,因为窗口可以调整大小。
  • 您将WindowSizeToContent 属性设置为Manual 会导致您自己的问题。没有ScrollBars,你根本无法将大控件添加到小空间中。
猜你喜欢
  • 2016-12-06
  • 2015-03-14
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
相关资源
最近更新 更多