为什么我的弹出背景是透明的

本文关键字:透明 背景 我的 为什么 | 更新日期: 2023-09-27 18:37:27

我正在尝试显示一个带有旋转图标的模式对话框,以指示后台发生的事情。

我正在为对话框使用Popup,并且我已经为内容构建了一个UserControl

Popup显示正常,但背景是透明的。 内容按预期显示。 理想情况下,我想要弹出窗口中带有白色边框的黑色背景。

这是我UserControl

<StackPanel VerticalAlignment="Center">
    <Image Name="WaitImage" Source="/Resources/Images/Wait/70px/Loader-01.png" Stretch="None"></Image>
    <StackPanel Name="MessPanel" Visibility="Collapsed">
        <TextBlock Name="MessText" Foreground="White" TextAlignment="Center" TextWrapping="Wrap"></TextBlock>
        <Button Name="MessBtn" Content="OK" Click="MessBtn_Click" Width="150"></Button>
    </StackPanel>
</StackPanel>

为什么我的弹出背景是透明的

我没有看到您在 xaml 中定义背景或边框。如果需要背景和边框,则必须指定一个。我还建议做一个"叠加"而不是弹出窗口。叠加允许您禁用页面的其余部分。

  <Grid x:Name="Overlay" Visibility="Collapsed">
        <Grid Background="{StaticResource PhoneBackgroundBrush}" Opacity=".6"/>
        <Border VerticalAlignment="Center" BorderThickness="2"
            Background="{StaticResource PhoneBackgroundBrush}" BorderBrush="{StaticResource PhoneForegroundBrush}"
            CornerRadius="5" Visibility="Visible" Margin="12">
            <StackPanel VerticalAlignment="Center">
                <Image Name="WaitImage" Source="/Resources/Images/Wait/70px/Loader-01.png" Stretch="None"/>
                <StackPanel Name="MessPanel" Visibility="Collapsed">
                    <TextBlock Name="MessText" Foreground="White" TextAlignment="Center" TextWrapping="Wrap"/>
                    <Button Name="MessBtn" Content="OK" Click="MessBtn_Click" Width="150"/>
                </StackPanel>
            </StackPanel>
        </Border>
    </Grid>

通过设置叠加层的可见性来显示叠加层

Overlay.Visibility = Visibility.Visible;

您不会向 StackPanel 添加边框或背景。

这样的事情应该有效。根据您的应用程序,您可能只想使用真实颜色,而不是基于设备主题的颜色。

<Border BorderThickness="2" BorderBrush="{StaticResource PhoneContrastForegroundBrush}">
<StackPanel Background="{StaticResource PhoneChromeBrush}" VerticalAlignment="Center">
    <Image Name="WaitImage" Source="/Resources/Images/Wait/70px/Loader-01.png" Stretch="None"></Image>
    <StackPanel Name="MessPanel" Visibility="Collapsed">
        <TextBlock Name="MessText" Foreground="White" TextAlignment="Center" TextWrapping="Wrap"></TextBlock>
        <Button Name="MessBtn" Content="OK" Click="MessBtn_Click" Width="150"></Button>
    </StackPanel>
</StackPanel>
</Border>