如何更改位于 ContentDialog 中的 Popup 元素的背景颜色?

How do i change background color on a Popup element located in a ContentDialog?

我不知道如何更改在 ContentDialog 中打开的 Popup 元素的背景颜色。

    <ContentDialog x:Name="MyDialog" MinWidth="600" Height="300" PrimaryButtonText="Close" IsPrimaryButtonEnabled="True" PrimaryButtonClick="UnicontaOrdersDialog_OnPrimaryButtonClick"  SecondaryButtonText="Ok" SecondaryButtonClick="UnicontaOrdersDialog_OnSecondaryButtonClick" Background="White" Opened="MyDialog_Opened">
    <Grid Background="White">
        <Popup x:Name="MyPopup" Width="100" Height="100">
            <Border Background="white" BorderBrush="Red" BorderThickness="1" Height="100" Width="100">
                <TextBlock TextWrapping="Wrap">This is a popup. Background should be white</TextBlock>
            </Border>
        </Popup>
    </Grid>
</ContentDialog>

Link to image of my problem

这是因为弹出窗口默认显示在 XAML window 主句柄中。您需要使其显示在其自己的(ContentDialog)顶级 HWND 中。要实现它,你需要使用从18362引入的ShouldConstrainToRootBounds 属性。你需要让你的项目版本为18362。然后你可以设置ShouldConstrainToRootBounds="False"

因为这个新的 属性 是从 18362 开始才可用的,我建议你使用 Conditional XAML 来检测它是否会在运行时可用,如下所示:

xmlns:Windows10version1903="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 8)"

<ContentDialog x:Name="MyDialog" Opened="MyDialog_Opened" Closed="MyDialog_Closed" PrimaryButtonText="Close" IsPrimaryButtonEnabled="True"   SecondaryButtonText="Ok">
    <Grid Background="White">
        <Popup x:Name="MyPopup" Width="100" Height="100" Windows10version1903:ShouldConstrainToRootBounds="False">
            <Border Background="White" BorderBrush="Red" BorderThickness="1" Width="100" Height="100">
                <TextBlock TextWrapping="Wrap">This is a popup. Background should be white</TextBlock>
            </Border>
        </Popup>
    </Grid>
</ContentDialog>