有没有人听说过在Windows 8平板电脑上没有显示MessageDialog的任何问题?或者更具体地说,三星700t?它使用常规的英特尔处理器,而不是ARM处理器。我在笔记本电脑上构建了这个应用程序,当从笔记本电脑调试时,messagedialog显示,显示在平板电脑模拟器上,但不显示在实际的平板电脑上。
我用的是Caliburn。在视图中显示消息对话框的微结果接口。
下面是我使用的代码片段: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中是否有禁用应用程序弹出窗口的设置,但我找不到。
任何想法?
您是否正在处理Coroutine.Execute
的回调?
Execute
上的回调可能会伴随着协程抛出的异常进行回调-如果您没有显式地在回调
Coroutine.Execute(YourEnumerator(), new ActionExecutionContext { Blah }, (o, e) => {
if(e.Error != null) // Something went wrong
});
可能异步等待抛出或类似的东西(不知道为什么!)
编辑:另外,枚举器中的东西也可能抛出:
Windows.UI.ViewManagement.ApplicationView.TryUnsnap();
var conn = NetworkInformation.GetInternetConnectionProfile();
如果在回调中没有处理,可以抛出使外部枚举器吞下异常-或者可以是conn
上的nullref
GetInternetConnectionProfile()返回空ref的原因是由于这样一个事实,当在笔记本电脑上,如果你从无线连接断开笔记本电脑的互联网连接配置文件默认为以太网,而平板电脑(至少三星700T)没有以太网端口,所以它的连接配置文件不存在,如果无线连接没有建立。
感谢查理为我指出了正确的方向。