0

如标题所示,

如何从 HTML5 Windows Store 应用程序中的代码关闭 MessageDialog?

到目前为止我的代码:

var msg = new Windows.UI.Popups.MessageDialog("Please wait");
msg.commands.append(new Windows.UI.Popups.UICommand("OK",
    function (command) {
        ...
    }));
msg.showAsync();

然后我想从代码中关闭这个弹出窗口,我在规范中没有找到任何方法,比如

msg.close();

有办法吗?

谢谢

4

3 回答 3

1

您的消息是“请稍候”这一事实向我表明,您可能想为这项工作使用不同的工具。

如果您尝试做的是通知用户您正在后台执行他们需要等待的操作,请考虑改用进度控件,如此处所述:

http://msdn.microsoft.com/en-us/library/windows/apps/hh465487.aspx

如果您使用进度控件,您既可以包含带有所需文本的文本标签,也可以在完成您要求用户等待的任何任务时关闭进度控件。

为了回答您最初的问题,我不相信有任何 API 可以以编程方式关闭 MessageDialog,因为这会破坏此控件的交互模式,即应用程序显示消息,然后允许用户关闭它当他们准备好时。

希望有帮助。

有关 Windows 应用商店应用开发的更多信息,请注册App Builder

于 2013-03-09T21:12:38.157 回答
1

我认为您想使用弹出窗口,类似于此答案。该链接解决了一个稍微不同的问题,因为它会在超时后关闭弹出窗口。

但是,您应该能够定义您和用户都可以关闭的浮出控件。在这两种情况下,您最终都会调用以下内容:

flyout.winControl.hide(); // Dismiss the flyout
于 2013-03-10T14:47:31.197 回答
0

看看这个...

(function(){
"use strict"; 
    var page = WinJS.UI.Pages.define("/html/cancelcommand.html", { 
        ready: function (element, options) { 
            document.getElementById("cancelCommand").addEventListener("click", cancelCommand_Click, false); 
        } 
    }); 

    // Click handler for the 'cancelCommand' button. 
    // Demonstrates setting the command to be invoked when the 'escape' key is pressed. 
    // Also demonstrates retrieval of the label of the chosen command and setting a callback to a function. 
    // A message will be displayed indicating which command was invoked. 
    // In this scenario, 'Try again' is selected as the default choice, and the 'escape' key will invoke the command named 'Close' 
    function cancelCommand_Click() { 
        // Create the message dialog and set its content 
        var msg = new Windows.UI.Popups.MessageDialog("No internet connection has been found."); 

        // Add commands and set their command handlers 
        msg.commands.append(new Windows.UI.Popups.UICommand("Try again", commandInvokedHandler)); 
        msg.commands.append(new Windows.UI.Popups.UICommand("Close", commandInvokedHandler)); 

        // Set the command that will be invoked by default 
        msg.defaultCommandIndex = 0; 

        // Set the command to be invoked when escape is pressed 
        msg.cancelCommandIndex = 1; 

        // Show the message dialog 
        msg.showAsync(); 
    } 

    function commandInvokedHandler(command) { 
        // Display message 
        WinJS.log && WinJS.log("The '" + command.label + "' command has been selected.", "sample", "status"); 
    } 
}());

http://code.msdn.microsoft.com/windowsapps/Message-dialog-sample-00c928f5/sourcecode?fileId=50972&pathId=1064922824

于 2013-03-09T17:59:00.433 回答