【问题标题】:WPF create a list of items that scroll vertically then horizontallyWPF 创建一个垂直滚动然后水平滚动的项目列表
【发布时间】:2010-03-10 06:57:23
【问题描述】:

如何创建一个控件,其中包含垂直列出的项中的项,但仅达到控件的高度,然后从第二列的顶部开始?

有点像 Windows 资源管理器的外观和感觉。

我目前正在使用WrapPanel,但我不知道如何让它水平滚动...

非常感谢这里的任何帮助

干杯, 标记

【问题讨论】:

    标签: wpf data-visualization wrappanel


    【解决方案1】:

    将具有垂直方向的WrapPanel 包含在ScrollViewer 中,并将VerticalScrollbarVisibility 设置为Disabled

    将其粘贴到 Kaxaml 中,您会看到:

    <Page
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
      <Page.Resources>
        <Style TargetType="{x:Type Button}">
          <Style.Setters>
            <Setter Property="Width" Value="50"/>
            <Setter Property="Height" Value="50"/>
          </Style.Setters>
        </Style>
      </Page.Resources>
      <Grid Margin="200, 100">
        <ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Visible" MaxWidth="200">
        <WrapPanel Orientation="Vertical">
          <Button/>
          <Button/>
          <Button/>
          <Button/>
          <Button/>
          <Button/>
          <Button/>
          <Button/>
          <Button/>
        </WrapPanel>
        </ScrollViewer>
      </Grid>
    </Page>
    

    【讨论】:

    • 如果将 VerticalScrollBarVisibility 设置为 Disabled,则无需设置 MaxHeight。
    • 已修复。出于某种原因,我忘记了 Visibility.Disabled 甚至存在。
    • 效果很好,虽然我最初遇到了一些麻烦,但我使用的是 Canvas 而不是网格,并且当包装面板中有很多内容时滚动条没有出现,这是为什么呢?
    • 如果您使用Canvas,您必须为子内容提供明确的大小和位置。 Canvas 真的超级原始;在大多数情况下,您不应该使用它来布局 UI 控件,因为它不执行任何类型的默认布局;您必须告诉它所有关于放置子元素的位置以及它们自己的大小。
    【解决方案2】:

    对我来说听起来很像 UniformGrid 或 WrapPanel 检查这个blog,他有一些很好的内置布局面板演示

    【讨论】:

    • 唯一的问题是 WrapPanel 不滚动,我需要它,我假设 UniformGrid 也一样...
    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多