b、添加一个页文件,命名为TaskPage.html
c、选择添加页。
在这个页面上添加三个页面,我们后面会在项目中用到
3、在ViewModels下的MainWindowViewModel中添加如下代码,为每个页面定义导航命令。
public class MainWindowViewModel : INotifyPropertyChanged { private Frame _frame; public event PropertyChangedEventHandler PropertyChanged; public MainWindowViewModel(Frame frame) { _frame = frame; } /// <summary> /// 跳转到TaskPage /// </summary> private ICommand _navigateToTaskPageCommand; public ICommand NavigateToTaskPageCommand { get { return _navigateToTaskPageCommand ?? new RelayCommand(param => NavigateToTaskPage()); } } /// <summary> /// 跳转到QueuePage /// </summary> private ICommand _navigateToQueuePageCommand; public ICommand NavigateToQueuePageCommand { get { return _navigateToQueuePageCommand ?? new RelayCommand(param => NavigateToQueuePage()); } } protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private void NavigateToTaskPage() { _frame.Navigate(new Uri("Pages/TaskPage.xaml",UriKind.Relative)); } private void NavigateToQueuePage() { _frame.Navigate(new Uri("Pages/QueuePage.xaml", UriKind.Relative)); } /// <summary> /// 登录之后用户名 /// </summary> public string? UserName { get { return UserInfoService.USER_NAME; } } } }
4、在MainWindows文件的Cs文件里修改代码如下:
/// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new MainWindowViewModel(this.MainFrame); this.Loaded += MainWindow_Loaded; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) { MainFrame.Navigate(new Uri("Pages/MainPage.xaml", UriKind.Relative)); } }
一个小作业
[!IMPORTANT]
如果有很多窗体,也要一个一个这样写吗?可以使用参数来处理。大家可以自己写一下。