[英]How do I make the WPF TextBox border inside the ScrollViewer not disappear
[英]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.