我必须在单击按钮(打开弹出窗口)时打开一个弹出窗口,然后在单击按钮(打开内容对话框)时从弹出窗口中显示一个内容对话框。
如果我设置Popup.ShouldConstrainToRootBounds=false,内容对话框将显示在弹出窗口下方。我不明白发生了什么。我想在弹出窗口上方显示ContentDialog吗?
我的完整项目链接--〉Source Code
我的源代码:
XAML:
<Grid x:Name="Grid">
<Button Click="Button_Click">Open Popup</Button>
</Grid>
C#:
private void Button_Click(object sender, RoutedEventArgs e)
{
popup = new Popup { Margin = new Thickness(200, 300, 0, 0),ShouldConstrainToRootBounds=false };
Border border = new Border { Width = 400, Height = 300, Background = new SolidColorBrush(Colors.Green) };
Button popupButton= new Button { Content = "Open Content Dialog", Width = 200, Height = 50 };
border.Child = popupButton;
popupButton.Click += PopupButton_Click;
popup.Child = border;
popup.IsOpen = true;
}
private async void PopupButton_Click(object sender, RoutedEventArgs e)
{
ContentDialog contentDialog = new ContentDialog
{
Title = "ContentDialogOverPopup",
Content = "Content Dialog",
CloseButtonText = "Ok"
};
await contentDialog.ShowAsync();
}
1条答案
按热度按时间oxiaedzo1#
这是预期的。当您将
ShouldConstrainToRootBounds
属性设定为false时,快显会位于它自己的最上层HWND中。但ContentDialog仍会位于主XAML windows 控制代码(HWND)中。当带有
ShouldConstrainToRootBounds = false
的弹出窗口第一次显示时,它会被放置在它自己的窗口中,并在该上下文中显示。这就是为什么PopUp总是在顶部的原因,因为它在另一个层中。如果没有必要,我建议您不要将此属性设置为false。有关详细信息,可以查看Popup.ShouldConstrainToRootBounds属性。