【发布时间】: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
你能解释一下为什么它不起作用并帮助我解决它吗?
非常感谢
【问题讨论】: