【问题标题】:How to fix Auto Vertical Scrollbar space in ItemsControl如何修复 ItemsControl 中的自动垂直滚动条空间
【发布时间】:2015-05-03 17:57:30
【问题描述】:

非常简单的场景但是我浪费了很多时间,所以我在这里问。我有一个 wpf 应用程序。

有一个列表视图,垂直滚动条可见性为自动,水平滚动条可见性被禁用。现在,当我开始在其中添加项目时,就像有 2 个项目并且由于 Auto 而没有垂直滚动条。现在,当我添加第三个项目时,一个垂直滚动条变得可见,并且内容向左移动了大约 15 个像素。

它看起来很奇怪,我希望内容保持在同一位置,并且只有滚动条可见或折叠。

我尝试将边距设置为内部项目或填充到列表视图。但没有任何效果。

【问题讨论】:

  • 设置ScrollViewer.HorizontalScrollBarVisibility="Visible"
  • @AnandMurali 我无法显示水平滚动条,它已被禁用。
  • 对不起,我的意思是把 VerticalScrollBarVisibility 设置为 Visible
  • @AnandMurali 但我不能将它设置为一直可见,它看起来很奇怪。它应该只在需要时才可见,并且没有任何内容置换。

标签: wpf xaml listview scroll scrollbar


【解决方案1】:

尝试以下操作:将滚动查看器控件添加到您的 GUI,右键单击 -> 编辑模板 -> 编辑副本

现在这是您要找的东西:

<ControlTemplate x:Key="ScrollViewerControlTemplateOwn" TargetType="{x:Type ScrollViewer}">
        <Grid x:Name="Grid" Background="{TemplateBinding Background}">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="auto"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="auto"/>
            </Grid.RowDefinitions>

列和行定义的 auto 设置会导致滚动条可见或不可见时的宽度发生变化。 如果您将这些 auto 值更改为例如20 显示器的宽度或高度不会改变。 要将这样的滚动查看器添加到列表视图,请对列表视图执行相同的“编辑副本”操作,并将滚动查看器设置为您的“自己的”模板,如下所示:

<ControlTemplate TargetType="{x:Type ListView}">
                    <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="1" SnapsToDevicePixels="true">
                        <ScrollViewer Focusable="false" Style="{Binding ScrollViewerControlTemplateOwn}" Padding="{TemplateBinding Padding}">

希望有帮助:)

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多