【发布时间】: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>
我还应用了 HorizontalAlignment 和 VerticalAllignMent 作为 ItemsControl 及其父级(即 Grid)的“拉伸”。
我想要的输出视图是(网格的第三列)
我得到的输出是:
滚动条应在尺寸超过后出现 如何将这些内容水平调整到 Grid 的最大宽度?
【问题讨论】:
-
是否只是在ScrollViewer中添加HorizontalAlignment=Stretch的情况?
-
对不起,我不明白你在问什么。但让我告诉你我想要的是,ItemsControl 中的这些按钮固定到单个“行”(如第二张图像中)。我希望内容占据整个列的宽度,然后在内容数量超过列大小时使其滚动。让我再放一张图片,它会在 Scrollbar 出现后显示。
-
已经添加了我的意思的答案
-
您修改了scrollviewer controltemplate 来实现这种风格?
-
我刚刚将
HorizontalAlignment=Stretch添加到ScrollViewer。我还没碰过它的模板。
标签: wpf xaml scrollbar itemscontrol