如何移除WPF中DocumentViewer控件自带的边框与阴影效果
你当前的配置有3个核心遗漏点:
- 自定义模板的外层
Border本身配置错误
你写的<Border BorderThickness="5" >主动加了5像素的边框,且没有指定边框颜色为透明,反而会额外生成边框,需要先修正这个外层Border的配置。 - 未覆盖内部
FixedPage的默认样式
DocumentViewer加载的文档内容默认会用FixedPage渲染,WPF内置的FixedPage样式自带边框和阴影效果,只改DocumentViewer外层模板不会影响内部内容的样式。 - 要确认你给DocumentViewer实例显式绑定了自定义样式
你的Style定义了x:Key="MyDocStyle",必须在对应的DocumentViewer控件上加上Style="{StaticResource MyDocStyle}"才会生效,否则会继续用系统默认样式。
修正后的完整代码参考:
首先是调整后的DocumentViewer样式:
<Style x:Key="MyDocStyle" TargetType="DocumentViewer"> <!-- 先清掉控件自带的默认边框和背景 --> <Setter Property="BorderThickness" Value="0"/> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="Background" Value="Transparent"/> <!-- 清掉默认阴影效果 --> <Setter Property="Effect" Value="{x:Null}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="DocumentViewer"> <!-- 修正外层Border的配置,去掉多余边框 --> <Border BorderThickness="0" BorderBrush="Transparent" Background="Transparent"> <Grid> <ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" x:Name="PART_ContentHost" Background="Transparent" BorderBrush="Transparent" BorderThickness="0" Padding="0" Effect="{x:Null}"> </ScrollViewer> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>
然后需要在同一个资源字典里加FixedPage的隐式样式,覆盖默认的边框阴影:
<Style TargetType="FixedPage"> <Setter Property="BorderThickness" Value="0"/> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="Background" Value="Transparent"/> <!-- 清掉FixedPage默认的阴影效果 --> <Setter Property="Effect" Value="{x:Null}"/> <Setter Property="Padding" Value="0"/> <Setter Property="Margin" Value="0"/> </Style>
内容的提问来源于stack exchange,提问作者Seated
相关产品推荐
相关产品推荐

