2016-12-22 85 views
2

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

是什么样子: enter image description here

这里是右上角的一个特写镜头: enter image description here



那讨厌的白边毁了我的应用程序的外观,并且需要去。我不相信这是另一个元素的背景,因为我已经将每个父元素的背景设置为非白色或透明的颜色,并且它仍然显示。如何在保持AllowTransparency禁用并保留我的无窗口窗口的同时删除违规边界?



代码澄清:该用户控件包含一个折磨的ScrollViewer:hastebin.com/okudoyubal.xml,是该用户控件孩子:hastebin.com/esiregapem.xml
采用略作修改地铁主题:http://www.mediafire.com/file/xjawcacw3gzk435/ModMetroTheme.zip
,这里是具体的ScrollViewer样式:https://hastebin.com/uvulihekex.xml

+1

ScrollViewer的内容是什么?什么是ScrollViewer背景属性设置为?您可以创建一个非常简单的XAML页面来演示问题并发布Xaml代码。我创建了一个带有“Grid”的简单窗口,我在其中放置了一个“ScrollViewer”。我在ScrollViewer上设置的唯一属性是设置10的边距和LightBlue的背景。然后,我在'ScrollViewer'中放置了一个Canvas。我的窗户上没有看到任何白色边框。 –

+0

此UserControl包含受困扰的ScrollViewer:https://hastebin.com/okudoyubal.xml,并且是此UserControl中的一个子项:https:// hastebin。com/esiregapem.xml – TiberiumFusion

+0

我复制了你的代码,没有看到白色边框,但滚动条看起来也不一样。你有没有在这里应用任何风格?你也可以发布它,也许这是造成边界的原因。 – lena

回答

0

我学到了更多东西,并找到了解决方法。单元格之间的白色边框是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的模糊消除了单元之间的透视边距。另外,效果没有明显的性能损失 - 据我所知。

也许模糊效果本质上需要透明度,并且其引入会让混淆的网格实际上具有透明的单元格边框。


如果有人有一个完全消除这个单元格边界的解决方案,那还是非常棒的!