【问题标题】:WinRT Returning data from a PageWinRT 从页面返回数据
【发布时间】:2014-06-14 04:44:39
【问题描述】:

我正在开发一个 WinRT 应用程序,该应用程序目前包含两个页面。在第一页中,用户单击一个按钮,将他/她引导到第二页,在那里他做出需要传递回调用页面的选择。如何将数据传回调用页面?

【问题讨论】:

    标签: windows-runtime


    【解决方案1】:

    使用视图模型。查看Mvvm Light(在 Nuget 上可用)。使用双向绑定在 ViewModel 中设置数据,然后当您返回另一个页面时,从同一个 ViewModel 中检索数据。还有很多guides for using Mvvm on Channel 9

    【讨论】:

      【解决方案2】:

      可以使用 Behaviors SDK (XAML) 在页面之间导航,具体来说是使用参数的 NavigateToPageAction。某篇文章here

      你可以参考一下

      xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
      xmlns:core="using:Microsoft.Xaml.Interactions.Core"
      

      并以这种方式使用它

      <interactivity:Interaction.Behaviors>
          <core:EventTriggerBehavior EventName="Click">
              <core:NavigateToPageAction TargetPage="Presentation.Views.ArticleDetailView" Parameter="{Binding Id}"/>
          </core:EventTriggerBehavior>
      </interactivity:Interaction.Behaviors>
      

      您可以通过某些事件(在本例中为 Click 事件)添加此行为,并将 Id 发送到第二页。在此页面中,您可以在后面的代码中处理此参数。它不是那么面向 MVVM,但您可以尝试。你不必使用接口INavigateAble,你可以直接使用你的ViewModel。

      private INavigateTo<int> NavigationViewModel()
      {
          return DataContext as INavigateTo<int>;
      } 
      
      protected override void OnNavigatedTo(NavigationEventArgs e)
      {
          var navigationViewModel = NavigationViewModel();
          var parameter = e.Parameter as int?;
          if (navigationViewModel != null && parameter != null)
          {
              navigationViewModel.SetParameter(parameter)
          }
          base.OnNavigatedTo(e);
      }
      

      但是,如果您只想发送数据而不是导航回您的第一页,则可以作为参数传递,例如一些 Action 回调方法,可以在第二页调用,在第一页设置一些值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多