你能从MessageDialog上的UICommand里面导航吗?

时间:2018-01-02 15:28:00

标签: c# uwp

我试图从Page UICommandMessageDialog进行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);
}

在我的代码中,我没有意识到我阻止了页面导航。

1 个答案:

答案 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课程的一部分。