2016-12-22 112 views
2

在我正在開發的WPF應用程序中,每個ScrollViewer控件都會在顯示的內容周圍放置一個白色邊框,並且我需要刪除此邊框。邊框與我的自定義樣式一起存在。
它沒有顯示的唯一時間是當我爲我的窗口啓用AllowTransparency時,但AllowTransparency必須保持禁用狀態 - 窗口無鑲邊且沒有鑲邊,並且我應用必要的投影的方式需要AllowTransparency爲false。如何刪除WPF ScrollViewer邊框

是什麼樣子: enter image description here

這裏是右上角的一個特寫鏡頭: enter image description here



那討厭的白邊毀了我的應用程序的外觀,並且需要去。我不相信這是另一個元素的背景,因爲我已經將每個父元素的背景設置爲非白色或透明的顏色,並且它仍然顯示。如何在保持AllowTransparency禁用並保留我的無窗口窗口的同時刪除違規邊界?



代碼澄清:該用戶控件包含一個折磨的ScrollViewer:hastebin.com/okudoyubal.xml,是該用戶控件孩子:hastebin.com/esiregapem.xml
採用略作修改地鐵主題:http://www.mediafire.com/file/xjawcacw3gzk435/ModMetroTheme.zip
,這裏是具體的ScrollViewer樣式:https://hastebin.com/uvulihekex.xml

+1

ScrollViewer的內容是什麼?什麼是ScrollViewer背景屬性設置爲?您可以創建一個非常簡單的XAML頁面來演示問題併發布Xaml代碼。我創建了一個帶有「Grid」的簡單窗口,我在其中放置了一個「ScrollViewer」。我在ScrollViewer上設置的唯一屬性是設置10的邊距和LightBlue的背景。然後,我在'ScrollViewer'中放置了一個Canvas。我的窗戶上沒有看到任何白色邊框。 –

+0

此UserControl包含受困擾的ScrollViewer:https://hastebin.com/okudoyubal.xml,並且是此UserControl中的一個子項:https:// hastebin。com/esiregapem.xml – TiberiumFusion

+0

我複製了你的代碼,沒有看到白色邊框,但滾動條看起來也不一樣。你有沒有在這裏應用任何風格?你也可以發佈它,也許這是造成邊界的原因。 – lena

回答

0

我學到了更多東西,並找到了解決方法。單元格之間的白色邊框是ScrollViewer顯示的網格背景。或者說,缺乏背景。雖然它被設置爲透明,但它決定採取非透明的方式,通過改變網格的背景顏色可以很便宜地解決問題。但是,這樣做很簡單,因爲每個ScrollViewer和其他使用Grid的元素現在都具有該固定背景,或者每個元素都必須手動設置(可能會損壞單元格邊界無法顯示的網格)。

雖然下面的解決方法不會在我的應用程序的每一個地方的工作,它工作在一些:

<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的模糊消除了單元之間的透視邊距。另外,效果沒有明顯的性能損失 - 據我所知。

也許模糊效果本質上需要透明度,並且其引入會讓混淆的網格實際上具有透明的單元格邊框。


如果有人有一個完全消除這個單元格邊界的解決方案,那還是非常棒的!