如何删除WPF ScrollViewer边框
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除WPF ScrollViewer边框相关的知识,希望对你有一定的参考价值。
在我正在开发的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和其他使用网格的元素现在都具有固定的背景,或者每个必须手动设置(可能会破坏单元边框无法显示的网格)。
虽然以下解决方法在我的应用程序的每个位置都不起作用,但它适用于某些方面:
<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将删除单元格之间的透视边距。此外,据我所知,效果没有明显的性能损失。
也许模糊效果固有地需要透明度,并且它的引入会使混乱的网格实际上具有透明的单元格边框。
如果有人有完全消除这个细胞边界的解决方案,那听起来仍然很棒!
它可能会因控件而异,但我可以用BorderThinkness="0"
中的ScrollViewer
实现控制。
注意:我写了这个答案,因为这种方法似乎没有尝试过。现在无法访问op的hastbin.com
链接。
以上是关于如何删除WPF ScrollViewer边框的主要内容,如果未能解决你的问题,请参考以下文章