-1

当我尝试调用 MessageDialog 时,我的应用程序崩溃并显示以下错误消息:

 System.Runtime.InteropServices.COMException: 'Invalid Window Identifier. (0x80070578)'

这发生在 App.xaml.xs 和我为此提议的助手中。

app.xaml 上的代码:

var messageDialog = new MessageDialog("Excedeu o limite de tentativas para fazer login.");
var result = await messageDialog.ShowAsync();

助手代码:

public static async Task ShowAsync(String keyName)
        {
            var msg = LocalizationHelper.GetValue(keyName);
            if (string.IsNullOrWhiteSpace(msg)) msg = keyName;

            var messageDialog = new MessageDialog(msg);
            await messageDialog.ShowAsync();
        }
                  
4

2 回答 2

2

您应该使用ContentDialog该类来构建您的对话体验。

如文档MessageDialog中所述,该API 已弃用:

使用 ContentDialog 类来构建您的对话体验。不要使用已弃用的 MessageDialog API。

于 2021-06-24T09:45:13.427 回答
0

在 .NET 5 或更高版本的桌面应用程序中,您需要在弹出对话框之前InitializeWithWindow.Initialize对对象使用该方法。MessageDialog

这是因为桌面应用程序可以有多个窗口对象,因此您需要为对话框指定所有者窗口。

例如:

var messageDialog = new MessageDialog("example");
var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(myWindow);
WinRT.Interop.InitializeWithWindow.Initialize(messageDialog, hwnd);
var result = await messageDialog.ShowAsync();

了解更多详情

于 2021-12-28T19:02:02.807 回答