0

有没有人听说过 MessageDialog 没有在 Windows 8 平板电脑上显示的任何问题?或者更具体地说是三星700t?它使用常规的英特尔进程而不是 ARM。我在笔记本电脑上构建了应用程序,从笔记本电脑调试时会显示消息对话框,显示在平板电脑模拟器上,但未显示在实际平板电脑上。

我正在使用 Caliburn.Micro IResult 界面在视图中显示消息对话框。

这是我正在使用的代码片段:

public IEnumerable<IResult> NavExecute(String method)
{
    Windows.UI.ViewManagement.ApplicationView.TryUnsnap();
    var conn = NetworkInformation.GetInternetConnectionProfile();
    if (conn.GetNetworkConnectivityLevel() != NetworkConnectivityLevel.InternetAccess)
    {
        yield return new MessageDialogResult("Internet Connection Not Detected", "Connection Error");
        netOn = false;

    }

以上是我的视图模型基类,继承了 IResult 类本身的实现:

public class MessageDialogResult : ResultBase
{
    private readonly string _content;
    private readonly string _title;

    public MessageDialogResult(string content, string title)
    {
        _content = content;
        _title = title;
    }

    public async override void Execute(ActionExecutionContext context)
    {
        var dialog = new MessageDialog(_content, _title);

        await dialog.ShowAsync();

        OnCompleted();
    }
}

我怀疑这不是代码的问题,因为我在两个设备上都在 x86 模式下进行调试(在有人问我为什么不对所有设备进行调试之前,这是因为我使用的是 SQLite,它需要为每个架构使用单独的包。 )

我不确定 Windows 8 中的某个设置是否会在应用弹出窗口中禁用,但我找不到。

有任何想法吗?

4

2 回答 2

1

GetInternetConnectionProfile() 返回 null ref 的原因是,在笔记本电脑上,如果您断开无线连接,笔记本电脑的互联网连接配置文件默认为以太网,而平板电脑(至少三星 700T)没有没有以太网端口,因此如果未建立无线连接,则它的连接配置文件不存在。

感谢 Charleh 为我指明了正确的方向。

于 2013-05-08T13:13:44.903 回答
1

你在处理 的回调Coroutine.Execute吗?

回调 onExecute可能会在协程抛出异常的情况下回调 - 如果您没有在回调中明确查找它,这将静默失败

Coroutine.Execute(YourEnumerator(), new ActionExecutionContext { Blah }, (o, e) => {
    if(e.Error != null) // Something went wrong
});

也许异步等待正在抛出或类似的东西(想不出为什么!)

编辑:

啊,您的枚举器中的其他内容也可能会抛出:

Windows.UI.ViewManagement.ApplicationView.TryUnsnap();
var conn = NetworkInformation.GetInternetConnectionProfile();

如果未在回调中处理,任何一个都可能抛出使外部枚举器吞下异常 - 或者可能是 nullref on conn

于 2013-05-02T15:17:20.033 回答