如何删除WPF ScrollViewer边框

时间:2016-12-22 22:12:39

标签: c# wpf controls scrollviewer

在我正在开发的WPF应用程序中,每个ScrollViewer控件都会在其显示的内容周围放置一个白色边框,我需要删除此边框。边框有和没有我的自定义样式。
唯一一次它没有显示是我为我的窗口启用AllowTransparency,但AllowTransparency必须保持禁用 - 窗口是无边框没有铬,我的方式应用必要的投影需要AllowTransparency为假。

它看起来像什么: enter image description here

这是右上角的特写: enter image description here



令人讨厌的白色边框破坏了我的应用外观,需要去。我不相信它是另一个元素显示的背景,因为我已经将几乎所有父元素的背景设置为非白色或透明颜色,它仍然显示。如何在禁用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

2 个答案:

答案 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链接现在无法访问。