【问题标题】:Get Navigation data in View Model Windows phone 8在 View Model Windows phone 8 中获取导航数据
【发布时间】:2015-02-19 20:03:29
【问题描述】:

我在项目中使用 Mvvmlight INavigationService,从视图模型导航到视图,并将对象作为参数传递,我如何在视图模型或后面的代码中获取。

I have implemented based on this

我的视图模型定位器

private static INavigationService CreateNavigationService()
    {
        var navigationService = new NavigationService();

        navigationService.Configure("topupdetails", new System.Uri("/Views/TopUpDetails.xaml", System.UriKind.Relative));

        return navigationService;
    }

查看模型命令执行

private void OnTapCommand(MyModel tappedItem)
    {
        if (tappedItem._verified)
        {
        SimpleIoc.Default.GetInstance<INavigationService>().NavigateTo("topupdetails",tappedItem);

        }

我导航到的页面

 protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        if (NavigationContext.QueryString.Any())
        {
            var item = NavigationContext.QueryString.Values.First();

        }
        base.OnNavigatedTo(e);
    }

在查询字符串中,我只是像“e-fghfdsfsd”这样的值,但不能转换为我的类对象,我可以在视图模型或代码隐藏中获取值,这是执行此操作的最佳方法,代码最少在代码隐藏中?

Mvvmlight 版本:Mvvmlight 5 Laurent Mvvmlight 5 Announcement

I have also referred this

【问题讨论】:

    标签: c# windows-phone-8 mvvm mvvm-light


    【解决方案1】:

    您可以使用 NavigationService 来评估 NavigationContext:

    GalaSoft.MvvmLight.Views.NavigationService _navigationService = [..] // Get your NS instance here or create a new one.
    var m = _navigationService.GetAndRemoveParameter(NavigationContext);
    // Try to cast:
    MyModel model = m as MyModel;
    // Deny if it's not a valid object
    if (model == null)
        return;
    

    【讨论】:

    • e.Parameter 对我不可用,例如。内容可用它只包含导航页面中的网格、堆栈面板。我正在使用 mvvmlight INavigation 从视图模型传递对象
    • 谢谢,这可以在 viewmodel 的任何地方工作吗?目前我通过信使服务传递对象
    • 它成功了,谢谢,如果我必须获取导航上下文,我必须在页面代码后面,然后我应该获取视图模型实例并将它们传递给选定的项目,所以我有任何更简单的方法是,我的问题是两个页面的视图模型相同。现在我认为Messenger是最好的方法吗? ,请告诉我你的想法
    • 在这种情况下使用信使应该没问题。我不知道您的应用程序的架构,但您不能总是每页只有一个虚拟机。
    • 我有一个列表视图页面,并将项目添加到列表视图页面,两者都插入到单个 VM,目前我以上述方式像您一样实现,我将数据上下文作为视图模型和从代码隐藏传递对象。将此 dataContext 作为 MyViewModel 并将对象从代码隐藏传递给 viewmodel。我不知道它有任何已知问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    相关资源
    最近更新 更多