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]
如果有很多窗体,也要一个一个这样写吗?可以使用参数来处理。大家可以自己写一下。










