2011-08-11 53 views
4

看看这个!
Breaking!
我真的需要摆脱这个!
看看这个繁殖!摆脱ListView中的1像素填充/边框间隙?

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

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

+0

边框可能在滚动条的周围;使用Snoop调查究竟应该设置哪个属性:http://blois.us/Snoop/ – dlev

+0

不,不,边框也围绕项目!但无论如何,我会用Snoop尝试一两件事...... – Vercas

+0

评论主要是赞成使用Snoop;它在进行WPF开发时非常宝贵。 – dlev

回答

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

+0

该问题不在我的模板中,因为我将它们排除了,问题仍然存在。如果不是我的问题,我该如何解决这个问题? O_O – Vercas

+2

@Vercas:你**不能**消除模板,总有*一些*模板。 –

+0

是的,它在模板中。让我把它添加到你的答案中。编辑:我的意思是我根据原来的模板删除了自己的模板。 – Vercas

0

如果你有它,这将更容易在Blend中修复。如果不是有免费试用。您将不得不为您在该列表中使用的滚动查看器生成控件模板的副本。从那里你可以编辑ScrollBar的模板。

滚动条模板一旦达到它就会达到几个级别的模板。 ListView模板> ItemsPresenter(在这种情况下包装面板)模板> ScrollViewer模板> ScrollBar模板。

+0

ScrollBar不是问题,它是整个ListView! ListView中有一个像素填充! – Vercas