使用滚动条(富文本框,列表框)自动调整wpf元素的大小

时间:2010-09-10 12:16:05

标签: wpf vb.net xaml resize

我遇到一个问题,我有像Listboxes和Rich Text框这样的元素,我想根据窗口的大小在xaml中自动设置大小,但我只希望它调整大小为如果内容大于该值,则放置滚动条。

不幸的是,我可以让滚动条工作的唯一方法是,如果我设置列表框/富文本框的特定高度(这不起作用,因为我希望它自动调整大小到网格的高度,它是包含在内,通常是窗口的高度(自动)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您不需要为WidthHeight使用固定值 - 您应该使用MinWidthMinHeight属性为控件指定最小宽度/高度。然后尝试类似于此的布局:

<Window>
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Grid>

            <ListBox MinWidth="500" MinHeight="250"/>

            <!-- any other controls... -->

        </Grid>
    </ScrollViewer>
</Window>

如果Grid的对齐属性设置为Stretch并且至少有一行/列设置为星号ScrollViewer通常会使用它获取的所有空间。在这种情况下,隐式创建的只有一行和一列,默认情况下都是星号 要使ScrollViewer有效,您需要以某种方式设置内容控件的最小大小,否则ScrollBar无法知道何时激活MinHeight s 。在上面的示例中,我使用MinWidth的{​​{1}}和ListBox属性完成了此操作,但您也可以在Grid {{1}上设置这些属性s和/或RowDefinition s。

现在,如果您调整窗口大小,以便ColumnDefinition变得小于Width,您将看到会出现滚动条。看看吧。