Учусь MVVM. Я пытаюсь из страницы HomeView открыть страницу ProductsView
За основу взял Rachel Lim's Blog
ApplicationViewModel
public class ApplicationViewModel : ObservableObject, IPageDisplay
{
...
public IPageViewModel GetCurrentPage()
{
return CurrentPageViewModel;
}
void IPageDisplay.ChangeViewModel(IPageViewModel newPage)
{
ChangeViewModel(newPage);
}
...
}
HomeViewModel
public class HomeViewModel : ObservableObject, IPageViewModel
{
private IPageDisplay _pageDisplay;
public HomeViewModel(IPageDisplay pageDisplay)
{
_pageDisplay = pageDisplay;
}
private ICommand _loadDashboardCommand;
public ICommand LoadDashboardCommand
{
get
{
if (_loadDashboardCommand == null)
{
_loadDashboardCommand = new RelayCommand(
p => LoadOtherView());
}
return _loadDashboardCommand;
}
}
private void LoadOtherView()
{
_pageDisplay.ChangeViewModel(new ProductsViewModel());
}
IPageDisplay
public interface IPageDisplay
{
IPageViewModel GetCurrentPage();
void ChangeViewModel(IPageViewModel newPage);
}
По итогу получаю ошибку:
Ссылка на объект не указывает на экземпляр объекта
В строке _pageDisplay.ChangeViewModel(new ProductsViewModel()); метода LoadOtherView
В чем проблема? Я долго изучал, но не разобрался. Я только учусь, надеюсь на подробный ответ и примером. Спасибо.
Можете скачать мой проект.
List<IPageViewModel> GetPageViewModels();а потом в Page1ViewModel_pageDisplay.ChangeViewModel(_pageDisplay.GetPageViewModels()[1]);. Та жа ошибка – Mr. Dandomi Feb 17 '22 at 18:47