【发布时间】:2023-03-05 09:37:01
【问题描述】:
我的页面应该有一些视图模型。我决定尝试嵌套类。我在我的项目中使用 MVVM Light。
我已经编写了继承自 ViewModelBase 和嵌套类的 VM。
我使用了微软文档的示例(嵌套示例):
public class UserMainViewModel : ViewModelBase
{
public UserMainViewModel()
{
}
private Page _mainContent;
public Page MainContent
{
get => _mainContent;
private set => Set(ref _mainContent, value);
}
public UserVM UserManager
{
get
{
return new UserVM(new UserMainViewModel());
}
}
public class UserVM
{
private UserMainViewModel _viewModel;
public UserVM(UserMainViewModel viewModel)
{
_viewModel = viewModel;
}
private RelayCommand _getInfoPageCommand;
public RelayCommand GetInfoPageCommand
{
get
{
return _getInfoPageCommand
?? (_getInfoPageCommand = new RelayCommand(() =>
{
_viewModel.MainContent = new GetUserInfo();
}));
}
}
}
}
我的视图定位器:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<UserMainViewModel>();
}
public UserMainViewModel UserMainContext => ServiceLocator.Current.GetInstance<UserMainViewModel>();
查看上下文
DataContext="{Binding UserMainContext, Source={StaticResource Locator}}"
以元素视图为例
<Button Content="Profile" Command="{Binding UserManager.GetInfoPageCommand}"/>
但是当我单击按钮时它不起作用。什么都没有发生。
使用嵌套类是否有正确的想法?谁能告诉我为什么它不起作用?
【问题讨论】:
-
任何有编码标准的地方几乎肯定会有人说任何公共类都应该放在它自己的文件中。
标签: c# wpf mvvm mvvm-light