c# - 摆脱 ListView 中的 1 像素填充/边框间隙?

标签 c# wpf xaml listview styles

看看这个!
Breaking!
我真的需要摆脱它!
看声明!

<ListView Name="list" BorderThickness="0">

我该如何解决?
这种差距不仅发生在滚动条上,它也发生在项目上,有或没有任何 View 。

最佳答案

看起来像 Template 中的问题,很可能是内部控件的一个属性,它未绑定(bind)到 ListBox 向您公开的任何属性。

Vercas 编辑:我发现了问题。
这是 ListView 的模板:

<ControlTemplate x:Key="ListView" TargetType="ListBox">
    <Border Background="{TemplateBinding Control.Background}" BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="{TemplateBinding Control.BorderThickness}" Name="Bd" Padding="1" SnapsToDevicePixels="True">
        <ScrollViewer Focusable="False" Padding="{TemplateBinding Control.Padding}">
            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
        </ScrollViewer>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="UIElement.IsEnabled" Value="False">
            <Setter Property="Border.Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
        </Trigger>
        <Trigger Property="ItemsControl.IsGrouping" Value="True">
            <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

只需将 Border 的 Padding 更改为 0 即可。
如果您不想费心寻找特性,这就是结果。

<ControlTemplate x:Key="ListView" TargetType="ListBox">
    <Border Background="{TemplateBinding Control.Background}" BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="{TemplateBinding Control.BorderThickness}" Name="Bd" Padding="0" SnapsToDevicePixels="True">
        <ScrollViewer Focusable="False" Padding="{TemplateBinding Control.Padding}">
            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
        </ScrollViewer>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="UIElement.IsEnabled" Value="False">
            <Setter Property="Border.Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
        </Trigger>
        <Trigger Property="ItemsControl.IsGrouping" Value="True">
            <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

不要忘记将此模板添加到您的ListView!

关于c# - 摆脱 ListView 中的 1 像素填充/边框间隙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7027697/

相关文章:

c# - WPF OpenFileDialog 与 MVVM 模式?

c# - PssCreateSnapshot - 访问被拒绝的奇怪情况

c# - 如何更改 WPF 应用程序的图标

.net - 自定义 WPF DatePickerTextBox 模板

c# - 如何在 WPF 中调整多边形的大小?

c# - 在 WPF 中进行 DataBound 时将 TextBlock 设置为完全粗体

c# - WPF TabItem 标题 - 强制按钮占用整个标题空间

c# - 为什么 DatasourceRequest 没有传递到 Kendo Grid 中工具栏的自定义命令

c# - 将 MMDDYYYY 转换为 01-JAN-YY

c# - Dapper:ConnectionString 属性尚未初始化