MainViewModel конкретизируется затем:
нажав на Daily-Button инстанцирует:
public DailyViewModel(IMessenger messenger)
{
_messenger = messenger;
_messenger.Register<DateNavigatorInfoObject>(this, LoadDailyData);
}
private void LoadDailyData(DateNavigatorInfoObject infoObject)
{
if (infoObject.DateNavigatorMode != DateTest.DateMode.Day)
return;
// get daily database stuff
}
После DateNavigatorViewModel получил экземпляр см НИЖЕ
мыши на Еженедельная кнопка instantiat Э.С.:
public WeeklyViewModel(IMessenger messenger)
{
_messenger = messenger;
_messenger.Register<DateNavigatorInfoObject>(this, LoadWeeklyData);
}
private void LoadWeeklyData(DateNavigatorInfoObject infoObject)
{
if (infoObject.DateNavigatorMode != DateTest.DateMode.Week)
return;
// get weekly database stuff
}
После DateNavigatorViewModel получил экземпляр см НИЖЕ
public DateNavigatorViewModel(IMainRepository mainRepo, IMessenger messenger)
{
_mainRepo = mainRepo;
_messenger = messenger;
SelectedDate = DateTime.Now;
// Wether daily/weekly data is fetched the start date for the data is NOW // when the ViewModels are instantiated the first time using a ViewModelLocator...
}
Теперь свойство, что был уволен установки DateTime.Now в CTOR
private DateTime _selectedDate;
public DateTime SelectedDate
{
get { return _selectedDate; }
set
{
if (_selectedDate.Date == value.Date)
return;
_selectedDate = value;
this.RaisePropertyChanged("SelectedDate");
var infoObject = new DateNavigatorInfoObject();
switch (DateNavigatorMode)
{
case DateTest.DateMode.Day:
infoObject.DateNavigatorMode = DateNavigatorMode;
infoObject.SelectedStartDate = value;
break;
case DateTest.DateMode.Week:
infoObject.DateNavigatorMode = DateNavigatorMode;
infoObject.SelectedStartDate = value;
infoObject.SelectedEndDate = value.AddDays(6);
break;
}
_messenger.Send(infoObject);
}
public class DateTest
{
public enum DateMode
{
Day,
Week,
Month,
}
}
The infoObject отправляется как в Daily, так и WeeklyViewModel, но в зависимости от DateNavigatorMode Извлечение базы данных отклоняется из ViewModel.
Для меня это решение, потому что оно сначала работает, а во-вторых, DAL участвует только в ViewModels.
Кто-то может отметить это как решение, если вам оно нравится. Критики тоже приветствуются, может быть, я могу что-то улучшить?
Как насчет того, чтобы вы не догадывались? – devuxer
Что это значит? Вся информация размещена выше ?? ах ... вы не получите последнее предложение, которое я вижу. Значение DateTime отправляется обоим ViewModels, поэтому я получаю данные дважды ... не так ли? – Elisabeth