У меня есть страница, на которой должно быть несколько моделей просмотра. Я решил попробовать Вложенные классы. Я использую MVVM Light для своего проекта.
Я написал виртуальную машину, которая наследуется от ViewModelBase
и вложенного класса.
Я использовал пример документации Microsoft (вложенный пример):
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();
}));
}
}
}
}
My ViewLocator:
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}"/>
Но он не работает, когда я нажимаю кнопку. Ничего не происходит.
Правильно ли я понимаю, используя вложенные классы? Кто-нибудь может сказать мне, почему это не работает?