WinUI 3 UWP - 对话框

Luí*_*uís 4 uwp winui-3 visual-studio-2022 windows-11

我正在 WinUI3 UWP 中为 Windows 11 开发一个新应用程序,我想显示一个对话框来提供安全操作,如 Microsoft Docs 示例中所示:https ://learn.microsoft.com/en-us/windows/apps/设计/控件/对话框和弹出窗口/对话框

private async void DisplayNoWifiDialog()
{
    ContentDialog noWifiDialog = new ContentDialog
    {
        Title = "No wifi connection",
        Content = "Check your connection and try again.",
        CloseButtonText = "Ok"
    };

    ContentDialogResult result = await noWifiDialog.ShowAsync();
}
Run Code Online (Sandbox Code Playgroud)

当用户单击 MainPage.xaml 上的按钮时显示该对话框,当用户单击“确定”时返回到 MainPage.xaml,但是当我运行程序时出现此错误:“必须为无父级弹出窗口显式设置 XamlRoot”

我该如何解决这个问题?

谢谢你!

Roy*_*SFT 5

您似乎正在开发一个 WinUI3 应用程序。正如@Raymond Chen 提到的,您必须将其添加到ContentDialogXamlRoot property中。

XML:

  <StackPanel x:Name="MyPanel" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
    <Button x:Name="myButton" Click="myButton_Click">Click Me</Button>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

隐藏代码:

 private async void myButton_Click(object sender, RoutedEventArgs e)
    {
        ContentDialog noWifiDialog = new ContentDialog
        {
            Title = "No wifi connection",
            Content = "Check your connection and try again.",
            CloseButtonText = "Ok"
        };
        //set the XamlRoot property
        noWifiDialog.XamlRoot = MyPanel.XamlRoot;

        ContentDialogResult result = await noWifiDialog.ShowAsync();
    }
Run Code Online (Sandbox Code Playgroud)