在我正在开发的WPF应用程序中,每个ScrollViewer控件都会在其显示的内容周围放置一个白色边框,我需要删除此边框。边框有和没有我的自定义样式。
唯一一次它没有显示是我为我的窗口启用AllowTransparency,但AllowTransparency必须保持禁用 - 窗口是无边框没有铬,我的方式应用必要的投影需要AllowTransparency为假。
这是右上角的特写:
令人讨厌的白色边框破坏了我的应用外观,需要去。我不相信它是另一个元素显示的背景,因为我已经将几乎所有父元素的背景设置为非白色或透明颜色,它仍然显示。如何在禁用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
答案 0 :(得分: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将删除单元格之间的透视边距。此外,据我所知,效果没有明显的性能损失。
也许模糊效果固有地需要透明度,并且它的引入会使混乱的网格实际上具有透明的单元格边框。
如果有人有完全删除此单元格边框的解决方案,那么听起来仍然非常棒!
答案 1 :(得分:0)
它可能因控件而异,但是我可以使用包含在BorderThinkness="0"
中的ScrollViewer
来实现控制。
注意:我写了这个答案,因为似乎没有尝试过这种方法。 op的hastbin.com
链接现在无法访问。