【问题标题】:How to respond to toast notifcations in MVVMCross UWP app如何响应 MVVMCross UWP 应用中的 toast 通知
【发布时间】:2017-03-22 17:34:20
【问题描述】:

我有一个用 MVVPCross 编写的 Windows UWP 应用程序。当用户单击 Toast 通知消息时,将调用应用程序方法 OnActivated。

protected override void OnActivated(IActivatedEventArgs e)
{
    // Handle toast activation
    if (e is ToastNotificationActivatedEventArgs)
    {
        var toastActivationArgs = e as ToastNotificationActivatedEventArgs;

    }
}

当我得到这个事件时,它想要:

  • 清除导航历史记录
  • 使用从 toast 事件传递给它的信息重新导航到主页
  • 然后主页将自行重新加载并根据传递给它的信息设置初始选择

我正在寻找如何通过 mvvmcross 框架强制导航的指导。我知道如何从一个视图模型导航到另一个视图模型,但在这种情况下,我不在视图或视图模型的上下文中 - 我在 Windows.UI.Xaml.Application 对象的上下文中。

谢谢, 迈克尔

【问题讨论】:

    标签: uwp mvvmcross


    【解决方案1】:

    我认为你唯一需要的是当前帧的实例

            if (args.Kind == ActivationKind.ToastNotification)
            {
                try
                {
                    if (args.PreviousExecutionState == ApplicationExecutionState.Running)
                    {
                        var fr = Window.Current.Content as Frame;
                        var toastActivationArgs = args as ToastNotificationActivatedEventArgs;
                        fr.Navigate(typeof(MainPage), toastActivationArgs);
                    }
                }
                catch { }
            }
    

    在您的 MainPage OnNavigatedTo 操作中,您可以获得导航参数并做任何您想做的事情。

    【讨论】:

    • 我认为 MVVMCross 与此不同。
    【解决方案2】:

    我对@9​​87654325@ 没有太多经验,但快速的 google 搜索让我快速上手。所以事情是这样的:

    1. 要清除导航返回堆栈(导航历史),请参阅this blog。它定义了一种干净的方式来做到这一点。此外,堆栈上的this answer 确实提供了对更多应用程序观点的见解。
    2. 要从主页导航到主页,您需要获取实际托管应用程序的 Frame 的当前实例。所以一个快速的Frame rootFrame = Window.Current.Content as Frame; 应该让你完成。更多关于这个的文档here。在网站上快速搜索“当前”,您会找到代码
    3. 要刷新页面,可以参考堆栈上的This question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-02
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 2022-11-25
      • 2021-11-27
      • 2017-03-19
      相关资源
      最近更新 更多