XAML 在uwp c#中导航

rjee0c15  于 2023-04-09  发布在  C#
关注(0)|答案(1)|浏览(143)

我尝试在两个UserControl之间实现导航。我这样做:有一个AppController类,它有一个ChangeCurrentView方法,该方法负责更改MainPage中的UserControl,但该方法不起作用:

internal class AppController {
  public enum CurrentViewTypes {
    NotesList,
    AddEditNote,
  }

  public void ChangeCurrentView(CurrentViewTypes viewType) {
    switch (viewType) {
      case CurrentViewTypes.NotesList:
        NotesListViewModel sVM = new NotesListViewModel(this);
        NotesListView sV = new NotesListView();
        //привязка
        sV.DataContext = sVM;
        //отображение
        MainViewModel.CurrentView = sV;
        break;
      case CurrentViewTypes.AddEditNote:
        AddEditViewModel eVM = new AddEditViewModel(this);
        AddEditView eV = new AddEditView();
        //привязка
        eV.DataContext = eVM;
        //отображение
        MainViewModel.CurrentView = eV;
        break;
      default:
        throw new ArgumentOutOfRangeException(nameof(viewType));
    }
  }
}

App.xaml.cs中的应用程序启动被覆盖,如下所示:

protected override void OnLaunched(LaunchActivatedEventArgs e) {
  MainPage mainPage = new MainPage();
  mainPage.DataContext = _controller.MainViewModel;
  Window.Current.Content = mainPage;
  Window.Current.Activate();
  _controller.ChangeCurrentView(AppController.CurrentViewTypes.NotesList);
}

在MainPage.xaml中,这是绑定:

<ContentPresenter Content="{Binding CurrentView}" />

do it similar to thismy code
我试着用vpf的例子来类比(我用的是userControl和1 page),但是不起作用。如何在mvvm架构的uvp项目中正确实现导航?我需要在1 page上使用用户控件之间的切换吗?

t8e9dugd

t8e9dugd1#

通常,我们使用Page ClassFrame Class在UWP应用中进行导航。导航发生在页面之间,通过Frame。Navigate方法。UserControl只是一个应该显示在页面内部的控件。ViewModels用作不同页面的DataContext。
另外,除非你想改变起始页,否则你不需要覆盖onlaunch方法。如果你想改变起始页,你只需要改变rootFrame.Navigate的参数。
我建议你从UWP的基本导航开始:Implement navigation between two pages

相关问题