使用ItemsControl对象在WPF应用程序中动态滚动
问题描述:
在我的xaml中,我有一些由我制作的对象。我把它们排成一排,如果窗户太少,我会换一个新的线。使用ItemsControl对象在WPF应用程序中动态滚动
问题是,当窗口很小,也在一个新的行中,元素不能全部显示。解决方案很简单:滚动条!但是,如果将Vertical/HorizontalScrollBarVisibility设置为auto,则不会再转到换行符。
这是我的XAML:
<ScrollViewer CanContentScroll="True" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" >
<ItemsControl Name="ItemGroups" ItemsSource="{Binding NotifyItemUI}" />
</ScrollViewer>
,这是截图什么,我需要为我的目标:
例如,如果我垂直调整我区,我有3行对象,这样如果窗口变得太小,我看不到第三行。在这种情况下,我想看到一个垂直滚动条来滚动它。
水平相同的东西:如果我有一个单行的元素太多,我必须水平滚动它。
答
你所描述的看起来像一个WrapPanel
,但你写的方式表明它是一个自定义控件,所以我们看不到你的ItemsControl
正在做什么布局。
但是,ScrollViewer
可能会与Panel
进行棘手的交互。如果Panel
度量到无穷大,它将始终认为自己足够大,并且永远不会告诉ScrollViewer
它没有空间。结果是ScrollViewer
不知道需要滚动条。如果这是你的问题,那么设置Width
和Height
属性或最大值为@Sheridan表示,应该修复它。
您可以在容器控件上设置'MaxHeight'或'MaxWidth'属性来限制每行显示的元素的最大数量,或者可以删除其中一个'Scrollbar'。 – Sheridan