我试图从Page
UICommand
内MessageDialog
进行UICommand
导航,但我无法让它发挥作用。
如果用户拒绝接受我的申请的协议条款,我会Page
要求var decline = new UICommand("No, I Decline", async command =>
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
(Window.Current.Content as Frame).Navigate(typeof(LoginPage));
});
});
commands.Add(decline);
导航。
Page
但是当在UI线程上执行时ShowDialogue
无法导航。
这是一个简单的public static async void ShowDialogue(string message, string title, IEnumerable<UICommand> commands)
{
var Dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher;
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
var dialog = new MessageDialog(message, title);
foreach (var command in commands)
{
dialog.Commands.Add(command);
}
dialog.DefaultCommandIndex = 0;
dialog.CancelCommandIndex = 1;
await dialog.ShowAsync();
});
}
方法:
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
if (allowToLeavePage == false)
{
e.Cancel = true;
return;
}
displayRequest.RequestRelease();
}
编辑:
我的问题在这里:
var clusterGroup = L.markerClusterGroup();
{
function estiloIcon(feature, latlng) {
return L.marker(latlng, {
icon: myIcon
})
};
var geojsonLayer = new L.geoJson(geo, {
pointToLayer: estiloIcon
})
clusterGroup.addLayer(geojsonLayer);
}
map.addLayer(clusterGroup);
}
在我的代码中,我没有意识到我阻止了页面导航。
答案 0 :(得分:1)
无法重现您的问题。我在按钮单击事件句柄中调用了ShowDialogue
方法。完整的代码片段可以很好地调用上面的ShowDialogue
方法,如下所示:
private void optest_Click(object sender, RoutedEventArgs e)
{
string message = "message test";
string title = "title test";
List<UICommand> commands = new List<UICommand>();
var decline = new UICommand("No, I Decline", async command =>
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
(Window.Current.Content as Frame).Navigate(typeof(LoginPage));
});
});
commands.Add(decline);
ShowDialogue(message, title, commands);
}
我的UWP应用目标版本是16299版本。如果您仍有问题,请提供完整的最小复制项目。更多详情请参阅MessageDialog
。
还有一件事,只有在升级使用MessageDialog
的通用Windows 8应用时,才应使用MessageDialog
,并且需要尽量减少更改。对于Windows 10中的新应用,我们建议使用ContentDialog
控件。请参阅&#34;重要&#34; MessageDialog
课程的一部分。