2011-08-11 4 views
4

이것 좀보세요!
Breaking!
정말 이걸 없애야합니다!
탈선을보세요!ListView에서 1 픽셀 안쪽 여백/테두리 간격을 제거 하시겠습니까?

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

어떻게 수정합니까?
이 틈은 스크롤바에서만 발생하는 것이 아니라보기가 있거나없는보기 항목에서도 발생합니다.

+0

경계는 아마도 스크롤바 주위에 있습니다. Snoop을 사용하여 어떤 속성이 실제로 설정되어야하는지 조사하십시오. http://blois.us/Snoop/ – dlev

+0

아니요, 아니요, 테두리가 항목 주위에도 있습니다! 하지만 어쨌든, 스누핑으로 두 가지를 시도해 보겠습니다. – Vercas

+0

댓글은 주로 스눕 사용에 유리합니다. WPF 개발을 할 때 매우 중요합니다. – dlev

답변

8

Template에있는 문제인데, 아마도 ListBox가 노출하는 속성에 바인딩되지 않은 내부 컨트롤의 속성 일 가능성이 큽니다.

Vercas 편집 : 문제점을 발견했습니다.

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

그냥 0으로 국경의 Padding을 변경하고 완료 :
이것은 ListView의 템플릿입니다.
속성을 찾는 것을 원하지 않으면 다음과 같은 결과가 나타납니다.

<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 : ** 템플릿을 제거 할 수 없으며 항상 * some * 템플릿이 있습니다. –

+0

예, 템플릿에 있습니다. Lemme가 답에 그것을 추가하십시오. 편집 : 나는 원래 템플릿을 기반으로 내 자신의 템플릿을 제거 의미. – Vercas

0

블렌드가 있으면 쉽게 수정할 수 있습니다. 그렇지 않으면 무료 평가판이 있습니다. 해당 목록에서 사용중인 scrollviewer에 대한 컨트롤 템플릿의 복사본을 생성해야합니다. 거기에서 ScrollBar의 템플릿을 편집 할 수 있습니다.

스크롤 막대 템플릿은 일단 템플릿에 도달하면 여러 단계의 템플릿이 될 것입니다. ListView 템플릿> ItemsPresenter (이 경우 랩 패널) 템플릿> ScrollViewer 템플릿> ScrollBar 템플릿.

+0

ScrollBar는 문제가 아니며 전체 ListView입니다! ListView에는 1 픽셀의 패딩이 있습니다! – Vercas

관련 문제