如何删除WPF ScrollViewer边框

问题描述 投票:2回答:2

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

它看起来像: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

c# wpf controls scrollviewer
2个回答
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将删除单元格之间的透视边距。此外,据我所知,效果没有明显的性能损失。

也许模糊效果固有地需要透明度,并且它的引入会使混乱的网格实际上具有透明的单元格边框。


如果有人有完全消除这个细胞边界的解决方案,那听起来仍然很棒!


0
投票

它可能会因控件而异,但我可以用BorderThinkness="0"中的ScrollViewer实现控制。

注意:我写了这个答案,因为这种方法似乎没有尝试过。现在无法访问op的hastbin.com链接。

© www.soinside.com 2019 - 2024. All rights reserved.