【问题标题】:Navigation on ViewModel in MVVM Light in Xamarin.Forms在 Xamarin.Forms 中的 MVVM Light 中的 ViewModel 上导航
【发布时间】:2016-07-26 13:05:36
【问题描述】:

我在 MVVM Light 中有一个 Xamarin.froms 应用程序,我想在单击按钮时打开另一个页面,但我只想使用 Page 类的这种方法

page.Navigation.PushModalAsync(new MyPage())  

如何发送“Page”类作为 ViewModel 类的参考。

【问题讨论】:

    标签: xamarin mvvm-light


    【解决方案1】:

    有多种方法可以做到这一点。

    简单的方法:

    • 将页面作为视图模型的构造函数参数传递。

    有用的方法:

    • 编写一个导航服务。这可以从这样的内容页面扩展:

      public class NavigationService : ContentPage
      {
              public static INavigation Navigation
              {
                  get {
                      return Application.Current.MainPage.Navigation;
                  }
              }
      
              public static IReadOnlyList<Page> NavigationStack () {
                      return Navigation.NavigationStack;
              }
      }
      

    现在您可以像这样在 ViewModel 中使用此服务:

    Page lastPage = Navigation.NavigationStack.Last;
    

    【讨论】:

      【解决方案2】:

      XAML 代码

      <Button Text="Help" Command="{Binding NavigateHelpPage}"/>
      

      Xamarin.forms 中的 MVVM 分层页面导航

      public ICommand NavigateHelpPage { get; }
          
      private async Task NavigateToHelpPage()
      {
          await Application.Current.MainPage.Navigation.PushAsync(new HelpPage());
      }
      

      内部构造函数:

      NavigateHelpPage = new Command(async () => await NavigateToHelpPage());
      

      MainPage 你可以这样设置:

      Application.Current.MainPage = new NavigationPage(new Views.Dashboard.DashboardPage());
      

      【讨论】:

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