如何修复 ItemsControl 中的自动垂直滚动条 space

How to fix Auto Vertical Scrollbar space in ItemsControl

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

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

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

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

尝试以下操作:将滚动查看器控件添加到您的 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 显示不会改变宽度或高度。 要将这样的滚动查看器添加到列表视图,请对列表视图执行相同的 "edit a copy" 操作并将滚动查看器设置为您的 "own" 模板,如下所示:

<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}">

希望对您有所帮助:)