【问题标题】:scrollbar appears wrong on ItemsCotrol of a grid滚动条在网格的 ItemsCotrol 上出现错误
【发布时间】:2012-10-11 23:41:29
【问题描述】:

我在网格的第三列中有 Itemscontrol,它显示了一组动态加载的按钮。 我希望这些内容(即按钮)占据网格的最大宽度。当内容超过网格大小时,会显示垂直滚动条。

我将滚动条样式应用于 ItemsControl,如下所示:

<Style x:Key="ItemControlStyle" TargetType="{x:Type ItemsControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ItemsControl}">
                        <Border>
                            <ScrollViewer HorizontalContentAlignment="Stretch"
                                          CanContentScroll="True"
                                          HorizontalScrollBarVisibility="Disabled"
                                          Uid="ScrollViewer_9"
                                          VerticalScrollBarVisibility="Auto">
                                <ItemsPresenter Margin="{TemplateBinding Padding}"
                                                KeyboardNavigation.DirectionalNavigation="Cycle"
                                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                                Uid="ItemsPresenter_5" />
                            </ScrollViewer>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

我还应用了 Horizo​​ntalAlignmentVerticalAllignMent 作为 ItemsControl 及其父级(即 Grid)的“拉伸”。

我想要的输出视图是(网格的第三列)

我得到的输出是:

滚动条应在尺寸超过后出现 如何将这些内容水平调整到 Grid 的最大宽度?

【问题讨论】:

  • 是否只是在ScrollViewer中添加Horizo​​ntalAlignment=Stretch的情况?
  • 对不起,我不明白你在问什么。但让我告诉你我想要的是,ItemsControl 中的这些按钮固定到单个“行”(如第二张图像中)。我希望内容占据整个列的宽度,然后在内容数量超过列大小时使其滚动。让我再放一张图片,它会在 Scrollbar 出现后显示。
  • 已经添加了我的意思的答案
  • 您修改了scrollviewer controltemplate 来实现这种风格?
  • 我刚刚将HorizontalAlignment=Stretch 添加到ScrollViewer。我还没碰过它的模板。

标签: wpf xaml scrollbar itemscontrol


【解决方案1】:

是否只是将HorizontalAlignment=Stretch添加到ScrollViewer的情况?

即:

<Style x:Key="ItemControlStyle" TargetType="{x:Type ItemsControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ItemsControl}">
                <Border>
                    <ScrollViewer  HorizontalAlignment="Stretch"
                                   HorizontalContentAlignment="Stretch"
                                   CanContentScroll="True"
                                   HorizontalScrollBarVisibility="Disabled"
                                   Uid="ScrollViewer_9"
                                   VerticalScrollBarVisibility="Auto">
                         <ItemsPresenter Margin="{TemplateBinding Padding}"
                                         KeyboardNavigation.DirectionalNavigation="Cycle"
                                         SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                         Uid="ItemsPresenter_5" />
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

【讨论】:

  • 也试过了,但仍然得到与“我得到的输出”图像相同的输出。但是在这样做时,我遇到了将物品放在包装板上。我将包装面板的大小增加到按钮模板宽度的 2 倍。现在我得到了我的预期,但没有使用滚动条。如果我使用滚动条,那么它会再次给出以前的错误输出
猜你喜欢
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多