Как изменить цвет фона элемента Popup, расположенного в ContentDialog? - PullRequest
0 голосов
/ 31 мая 2019

Я не могу понять, как изменить цвет фона элемента Popup, открытого в ContentDialog.

    <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>

Ссылка на изображение моей проблемы

1 Ответ

0 голосов
/ 03 июня 2019

Это потому, что всплывающее окно отображается в дескрипторе основного окна XAML по умолчанию.Вам нужно, чтобы он отображался в своем собственном (ContentDialog) HWND верхнего уровня.Чтобы достичь этого, вам нужно использовать свойство ShouldConstrainToRootBounds , которое появилось в 18362. Вам необходимо сделать версию проекта 18362. Тогда вы можете установить ShouldConstrainToRootBounds="False".

.свойство доступно только с 18362, я предлагаю использовать Условный 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>
...