Доброго времени суток, Господа. У меня есть приложение, которое имеет одно окно, в нем определен Frame контрол, и несколько страниц. Все страницы наследуются от этого класса:
public class BasePage<VM> : Page where VM : BasePageViewModel, new()
{
private VM viewModel;
public VM ViewModel
{
get { return viewModel; }
set
{
if( viewModel == value )
return;
viewModel = value;
this.DataContext = viewModel;
}
}
public BasePage( IPageNavigator pageNavigator )
{
ViewModel = new VM();
ViewModel.PageNavigator = pageNavigator;
}
}
Объект, представляющий экземпляр наследника IPageNavigator, выглядит таким образом:
public class PageNavigator : BaseViewModel, IPageNavigator
{
private Dictionary<Type, Page> pages = new Dictionary<Type, Page>();
public Page CurrentPage { get; set; }
public void NextPage<T>()
{
Type key = typeof( T );
if( pages.TryGetValue( key, out var value ) )
{
CurrentPage = value;
return;
}
Page page = (Page)Activator.CreateInstance( typeof( T ), this );
pages.Add( key, page );
CurrentPage = page;
}
}
он создается в MainWindowViewModel - ViewModel главного окна и сразу же устанавливается стартовая страница:
PageNavigator = new PageNavigator();
PageNavigator.NextPage<MainPage>();
свойство public Page CurrentPage { get; set; } соответственно привязано к Frame.
Теперь вопрос: Как передавать данные между страницами? К примеру в MainPage у меня в ListBox отображен некий список, по нажатию на пункт списка, должен произойти переход на другую страницу CalculatorPricePage с передачей пункта в виде параметра. Я сделал команду в MainPage, при срабатывании которой, происходит такой обработчик:
private void OnCalculatorPriceProductRequest( Product product )
{
// Как передать product в CalculatorPriceProductPage???
// Осуществляем переход
PageNavigator.NextPage<CalculatorPriceProductPage>();
}
Не подскажете как это можно правильно реализовать в рамках MVVM?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости