簡體   English   中英

如何刪除WPF ScrollViewer邊框

[英]How to Remove WPF ScrollViewer Border

在我正在開發的WPF應用程序中,每個ScrollViewer控件在其顯示的內容周圍都放置一個白色邊框,並且我需要刪除此邊框。 無論是否包含我的自定義樣式,都會顯示邊框。
唯一沒有顯示的時間是當我為窗口啟用AllowTransparency時,但是AllowTransparency必須保持禁用狀態-窗口是無邊框的,沒有鑲邊,並且我應用必要的陰影的方式要求AllowTransparency為false。

看起來像什么: 在此處輸入圖片說明

這是右上角的特寫: 在此處輸入圖片說明



那個令人討厭的白色邊框破壞了我的應用程序的外觀,需要刪除。 我不認為這是另一個元素的背景,因為我幾乎將每個父元素的背景都設置為非白色或透明顏色,並且仍然可以顯示。 如何在禁用AllowTransparency並保留無鉻窗口的同時刪除有問題的邊框?



澄清代碼:此UserControl包含一個受災的ScrollViewer: hastebin.com/okudoyubal.xml,並且是此UserControl中的子級: hastebin.com/esiregapem.xml
使用經過稍微修改的Metro主題: http : //www.mediafire.com/file/xjawcacw3gzk435/ModMetroTheme.zip
以下是特定的ScrollViewer樣式: https : //hastebin.com/uvulihekex.xml

我了解到更多信息,並找到了解決方法。 單元格之間的白色邊框是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會刪除單元格之間的透明邊距。 此外,據我所知,這種效果不會造成明顯的性能損失。

也許模糊效果固有地需要透明性,並且其引入會欺騙混亂的Grid實際上具有透明的單元格邊界。


如果有人能完全消除此單元格邊界,那還是很高興聽到的!

它可能因控件而異,但是我可以通過包含contol的ScrollViewer中的BorderThinkness="0"來實現。

注意:我寫了這個答案,因為這種方法似乎沒有嘗試過。 op的hastbin.com鏈接現在無法訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM