【问题标题】:Dynamic scrolling in a WPF application with ItemsControl object使用 ItemsControl 对象在 WPF 应用程序中动态滚动
【发布时间】:2015-12-23 03:30:08
【问题描述】:

在我的 xaml 中,我有一些我制作的对象。我把它们排成一行,如果窗口太小,我就换一行。

问题是当窗口太小以至于在新行中元素不能全部显示时。解决方法很简单:滚动条!!但是,如果我将 Vertical/Horizo​​ntalScrollBarVisibility 设置为 auto,它就不再换行了。

这是我的 xaml:

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

这是我需要的截图:

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

水平方向相同:如果我的单行元素太多,我必须水平滚动它。

【问题讨论】:

  • 您可以在容器控件上设置MaxHeightMaxWidth 属性来限制每行显示的最大元素数,也可以删除Scrollbars 之一。

标签: wpf visual-studio xaml user-interface scroll


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多