2016-12-22 1 views
2

개발중인 WPF 응용 프로그램에서 모든 ScrollViewer 컨트롤은 표시되는 내용 주위에 흰색 테두리를 넣고이 테두리를 제거해야합니다. 국경은 내 사용자 정의 스타일이 있거나없는 상태로 제공됩니다.
표시되지 않는 유일한 시간은 내 창에 AllowTransparency를 사용할 때만 가능하지만 AllowTransparency를 사용하지 않도록 설정해야합니다. 창에 크롬이없는 경계선이 있으며 필요한 그림자를 적용하는 방법은 AllowTransparency가 false 여야합니다. 불쾌한 흰색 테두리 내 응용 프로그램의 모양을 유적, 그리고 갈 필요가 enter image description here



: 여기 enter image description hereWPF ScrollViewer Border를 제거하는 방법

는 오른쪽 상단의 근접 촬영은 다음과 같은

가 보이는 무엇. 나는 모든 부모 요소의 배경을 흰색이 아니거나 투명한 색으로 설정했기 때문에 그것을 통해 보여지는 다른 요소의 배경이라고 믿지 않으며 여전히 보여줍니다. AllowTransparency를 비활성화하고 크롬없는 윈도우를 유지하면서 불쾌한 테두리를 제거하려면 어떻게해야합니까? 설명에 대한



코드 : hastebin.com/okudoyubal.xml를이있는 UserControl의 아이 인 :이 UserControl을은 고통에서 ScrollViewer를 포함 hastebin.com/esiregapem.xml
약간 수정 메트로 테마를 사용 : https://hastebin.com/uvulihekex.xml

: http://www.mediafire.com/file/xjawcacw3gzk435/ModMetroTheme.zip
여기가 특정의 ScrollViewer 스타일이다
+1

'ScrollViewer'의 내용은 무엇입니까? 'ScrollViewer' Background 속성은 무엇으로 설정되어 있습니까? 문제를 보여주고 Xaml 코드를 게시하는 매우 간단한 XAML 페이지를 만들 수 있습니까? 나는'ScrollViewer'를 배치 한'Grid'가있는 간단한 윈도우를 만들었습니다. 'ScrollViewer'에서 설정 한 유일한 속성은 여백을 10으로 설정하고 Background of LightBlue를 설정하는 것입니다. 그런 다음 'Canvas'를 'ScrollViewer'안에 배치했습니다. 내 창문에 흰 경계선이 보이지 않아. –

+0

이 UserControl에는 고생 한 ScrollViewer가 포함되어 있습니다 (https://hastebin.com/okudoyubal.xml).이 UserControl의 하위 항목은 https : // hastebin입니다.com/esiregapem.xml – TiberiumFusion

+0

코드를 복사했는데 흰색 테두리가 보이지 않지만 스크롤 막대가 다르게 보입니다. 여기에 어떤 스타일을 적용 했습니까? 또한 게시 할 수 있습니까, 어쩌면 국경을 일으키는 원인 일 수 있습니다. – lena

답변

0

나는 더 많은 것을 배웠고 해결 방법을 발견했다. 셀 사이의 흰색 테두리는 ScrollViewer의 격자 배경을 통해 보여줍니다. 오히려 배경이 부족합니다. 투명하게 설정되어 있지만 투명하지 않게 행동하기로 결정했습니다. 그리드의 배경색을 변경하여 값 싸게 해결할 수 있습니다. 그러나 모든 ScrollViewer 및 기타 그리드 사용 요소에 단색 배경이 있거나 각 셀을 수동으로 설정해야합니다 (셀 경계가 표시되지 않는 잠재적 인 망가짐). 다음 해결 방법은 내 응용 프로그램에있는 모든 장소에서 작동하지 않는 동안

, 그것은 일부에서 작동 :

<Style x:Key="ScrollViewerStyle" TargetType="{x:Type ScrollViewer}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ScrollViewer}"> 
       <Grid Background="{x:Null}" SnapsToDevicePixels="True" UseLayoutRounding="True"> 
        <Grid.Effect> 
         <BlurEffect KernelType="Box" Radius="0"/> 
        </Grid.Effect> 

        // Content 

       </Grid> 
      ... 

박스를 적용 레이아웃 반올림, 를 사용하여 픽셀에 스냅, 투명 배경을 설정 흐림 0은 셀 사이의 투명 여백을 제거합니다. 또한, 내가 알 수있는 한, 성능에서 눈에 띄는 성능 손실은 없습니다.

아마도 흐림 효과는 투명성을 기본적으로 필요로하며 혼란스럽게 된 격자를 실제로 투명한 셀 테두리가있는 것으로 트릭합니다.


누구나이 셀 경계를 제거하는 해결책이 있다면 여전히 듣기 좋습니다!