Доброго времени суток, Господа. У меня есть приложение, которое имеет одно окно, в нем определен 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?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как быстро и безболезненно переименовать рабочий проект в visual studio 2008? По глупости оставил стандартное WindowsFormsApplications, теперь хочу назвать...
Добрый день! В базе данных имеется таблица с ролями и три таблицы, отвечающие за пользователей: заказчик, типография и администраторЭти три...
Исключить из введенного предложения все слова, которые содержат заданную пользователем комбинацию из двух символов