2011-08-11 98 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