如何防止在运行时更改列表框的高度和宽度

时间:2014-07-10 09:36:53

标签: wpf wpf-controls wpftoolkit wpf-4.0

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

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

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

我有不同尺寸的控件,很少有小尺寸,其他尺寸很大。因为我已将SizeToContent属性设置为“WidthAndHeight”。用户控件是合适的,即窗口将通过适合用户控件动态地改变其宽度和高度。

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

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

请尽快回复。

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

最初,当加载窗口时,将出现第一个控件,其尺寸很小。 现在,当我尝试加载第二个控件时,与第一个控件相比,它的尺寸非常大 如下所示,加载了控件,但出现了一个滚动条,这是不可接受的。

第一个控件非常合适,因为我将窗口的SizeToContent属性设置为 WidthAndHeight , 在加载窗口后,它会更改为手动

1 个答案:

答案 0 :(得分:0)

要阻止ListBox的内容调整大小,只需限制其WidthHeight。您可以将其添加到具有特定GridRowDefinition的{​​{1}}中,或者直接设置ColumnDefinitionListBox.Width属性:< / p>

ListBox.Height

或者,您可以随时设置<ListBox ItemsSource="{Binding Items}" Width="400" Height="800" /> ListBox.MaxWidth属性:

ListBox.MaxHeight

一旦内容增长大于这些最大值,<ListBox ItemsSource="{Binding Items}" MaxWidth="400" MaxHeight="800" /> 会自动显示,但您也可以使用ScrollViewer.VerticalScrollBarVisibilityScrollViewer.HorizontalScrollBarVisibility属性明确设置它们:

ScrollBar