使用ItemsControl对象在WPF应用程序中动态滚动

使用ItemsControl对象在WPF应用程序中动态滚动

问题描述:

在我的xaml中,我有一些由我制作的对象。我把它们排成一排,如果窗户太少,我会换一个新的线。使用ItemsControl对象在WPF应用程序中动态滚动

问题是,当窗口很小,也在一个新的行中,元素不能全部显示。解决方案很简单:滚动条!但是,如果将Vertical/Horizo​​ntalScrollBarVisibility设置为auto,则不会再转到换行符。

这是我的XAML:

<ScrollViewer CanContentScroll="True" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" > 
    <ItemsControl Name="ItemGroups" ItemsSource="{Binding NotifyItemUI}" /> 
</ScrollViewer> 

,这是截图什么,我需要为我的目标:

enter image description here

例如,如果我垂直调整我区,我有3行对象,这样如果窗口变得太小,我看不到第三行。在这种情况下,我想看到一个垂直滚动条来滚动它。

水平相同的东西:如果我有一个单行的元素太多,我必须水平滚动它。

+1

您可以在容器控件上设置'MaxHeight'或'MaxWidth'属性来限制每行显示的元素的最大数量,或者可以删除其中一个'Scrollbar'。 – Sheridan

你所描述的看起来像一个WrapPanel,但你写的方式表明它是一个自定义控件,所以我们看不到你的ItemsControl正在做什么布局。

但是,ScrollViewer可能会与Panel进行棘手的交互。如果Panel度量到无穷大,它将始终认为自己足够大,并且永远不会告诉ScrollViewer它没有空间。结果是ScrollViewer不知道需要滚动条。如果这是你的问题,那么设置WidthHeight属性或最大值为@Sheridan表示,应该修复它。