WPF:打印时 UIElement 消失了

问题描述

我有一个非常简单的 WPF XAML 代码

<Grid Name="MainGrid" Margin = "20 0 20 0">
    <Grid.RowDeFinitions>
        <RowDeFinition Height="*"/>
        <RowDeFinition Height="auto"/>
    </Grid.RowDeFinitions>

    <ScrollViewer>
        <StackPanel Name="RowsCont" Orientation="Vertical"/>
    </ScrollViewer>

    <Border Grid.Row="1" Background="#E9E9E9">
        <Border.Effect>
            <DropShadowEffect BlurRadius="10" ShadowDepth="1" Direction="90" Opacity=".5"/>
        </Border.Effect>
        <StackPanel Grid.Column="0" Orientation="Vertical" HorizontalAlignment="Left" Margin="5">
            <TextBlock Text="ORDERNUM:" FontSize="12" Foreground="Black" FontFamily="Bahnschrift" Margin="8 2 0 0"/>
            <TextBlock Name="OrderNumBlk" Text="Nazy-001" FontSize="20" Foreground="Black" FontFamily="Consolas" Margin="8 0 0 0" FontWeight="ExtraBold"/>
        </StackPanel>
    </Border>
</Grid>

当我打开窗户时,一切都会出现。 'MainGrid' 元素被传递给 PrintDialog 的 PrintVisual() 方法。 这是后端:

PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
printDlg.PrintVisual(MainGrid,"WPF Print");

当我实际打印时出现问题。 'Border' 放置在 Grid.Row 1 中,只是简单地消失了。

我不知道这怎么会发生。请帮我解决这个问题。

提前致谢。

解决方法

不明白为什么会这样,但是,我以某种方式禁用了“阴影效果”,一切正常。