【问题标题】:Hamburger Menu / UserControl Navigation汉堡菜单/用户控制导航
【发布时间】:2021-09-01 17:08:10
【问题描述】:

我正在学习创建菜单。我有一些问题,可能和this post一样。

我的应用包含:

  • 一个主容器(MainWindow)
  • 一个菜单(MenuView)
  • 一些观点

MainWindow 是这样定义的(两列,一列用于菜单,另一列用于视图):

<Grid Background="{StaticResource PrimaryBackgroundColor}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <ContentControl Grid.Column="0" Content="{Binding Menu}"/>
    <ContentControl Grid.Column="1" Content="{Binding SelectedViewModel}"/>
</Grid>

当我们点击菜单项时,没有显示视图(使用 UserControl 构建)。

我添加以下代码:

  • MainWindowViewModel.cs

      #region Constructor
      public MainWindowViewModel()
      {
          Menu = new MenuViewModel();
      }
      #endregion Constructor
    
      #region Properties
      private object _menu;
      public object Menu
      {
          get
          {
              return _menu;
          }
          set
          {
              _menu = value;
              OnPropertyChanged(nameof(Menu));
          }
      }
    
      private object _selectedViewModel;
      public object SelectedViewModel
      {
          get
          {
              return _selectedViewModel;
          }
          set
          {
              _selectedViewModel = value;
              OnPropertyChanged(nameof(SelectedViewModel));
          }
      }
      #endregion Properties
    
  • MenuViewModel.cs

      #region Variable
      MainWindowViewModel mainWindowObj;
      #endregion Variable
    
      #region Constructor
      public MenuViewModel()
      {
          menuCommand = new RelayCommand(load_menuChoiced);
      }
      #endregion Constructor
    
      #region Properties
      public ICommand menuCommand { get; set; }
      #endregion Properties
    
      #region Public Methods
      #endregion Public Method
    
      #region Private Method
      public void load_menuChoiced(object obj)
      {
          switch (obj)
          {
              case "Home":
                  mainWindowObj = new MainWindowViewModel()
                  {
                      SelectedViewModel = new HomeViewModel()
                  };
                  break;
    
              case "Graphic":
    
                  break;
    
              case "Setting":
    
                  break;
    
              default:
                  break;
          }
      }
      #endregion Private Method
    

你能解释一下为什么它不起作用并帮助我解决它吗?

非常感谢

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

    可能是 HomeView 没有找到,将这段代码添加到 MainWindow 的 Resources 属性中。

     <DataTemplate DataType="{x:Type vm:HomeViewModel}">
        <view:HomeView/>
    </DataTemplate>
    

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多