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

时间:2011-08-11 14:31:07

标签: c# wpf xaml listview styles

看看这个!
Breaking!
我真的需要摆脱这个! 看看蜕变!

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

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

2 个答案:

答案 0 :(得分:8)

Template中看起来像是一个问题,很可能是内部控件的一个属性,它没有绑定到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>

只需将边框的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

答案 1 :(得分:0)

如果你有它,这将更容易修复Blend。如果没有免费试用。您必须为该列表中使用的scrollviewer生成控件模板的副本。从那里,您可以编辑ScrollBar的模板。

一旦你到达它,滚动条模板就会变成几个级别的模板。 ListView模板&gt; ItemsPresenter(在这种情况下为Wrap Panel)模板&gt; ScrollViewer模板&gt;滚动条模板。