我遇到一个问题,我有像Listboxes和Rich Text框这样的元素,我想根据窗口的大小在xaml中自动设置大小,但我只希望它调整大小为如果内容大于该值,则放置滚动条。
不幸的是,我可以让滚动条工作的唯一方法是,如果我设置列表框/富文本框的特定高度(这不起作用,因为我希望它自动调整大小到网格的高度,它是包含在内,通常是窗口的高度(自动)。
非常感谢任何帮助。
答案 0 :(得分:2)
您不需要为Width
和Height
使用固定值 - 您应该使用MinWidth
和MinHeight
属性为控件指定最小宽度/高度。然后尝试类似于此的布局:
<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
,您将看到会出现滚动条。看看吧。