Итак, у меня есть модель представления с именем NewBonusCalculationViewModel.
Эта модель представления заинтересована в нескольких других моделях представления, которые служат вкладками в NewBonusCalculationViewModel.
Одна из вкладок, которая интересует NewBonusCalculationViewModel, называется GeneralTabVM. Этот GeneralTabVM имеет модель данных с именем GeneralTabDataModel, а свойства из модели данных отображаются с помощью GneralTabVM (ViewModelToModel).
В GeneralTabDataModel у меня есть свойство StartingTime, и когда я открываю страницу NewBonusCalculationViewModel и нажимаю кнопку X (без внесения каких-либо изменений), вид Viewmodel сбрасывает значения свойства StartingTime, и это вызывает IsModelDirtyChanges, и я получаю вопрос "Вы хотите сохранить изменения?".
Не могу найти причину сброса или перезагрузки viewmodel. Я использую Catel 4.4.
Я попытался удалить сопоставление заинтересованных пользователей, даже удалив свойство StartingTime (и используя Model.StartingTime), но, похоже, ничего не работает.
Вот так я загружаю реквизиты GeneralTab из NewBonusCalcVieModel:
generalModel = new GeneralTabDataModel
{
Header = Client.Common.GetText(456),
Id = LohnStatList[0].Id,
Descript = LohnStatList[0].Descript,
IdGroup = LohnStatList[0].IdGroup,
IdStation = LohnStatList[0].IdStation,
SelectedStationName = this.AllStations.FirstOrDefault(w => w.IdStation == LohnStatList[0].IdStation).Name,
NWhichTime = this.NWhichTime[0].Id,
Period = Nomenclature.Period,
LohnStatList = LohnStatList,
CanEditTab = this.CanEditTabs
};
this.prevName = LohnStatList[0].Descript;
this.generalModel.PropertyChanged += GeneralModel_PropertyChanged;
this.BonusTabsList.Add(generalModel);
Это конструктор для GeneralTabVM:
public GeneralTabViewModel(GeneralTabDataModel model) : base(model)
{
this.IsLoadingData = true;
this.SelectBonusTypeCommand = new Command(this.OnSelectBonusTypeCommandExecute);
this.SelectStationCommand = new Command(this.OnSelectStationCommandExecute);
this.SelectedStationName = model.SelectedStationName;
this.Model = model;
this.Model.Descript.Trim();
this.LoadData();
this.Model.AcceptChanges();
this.Model.PropertyChanged += Model_PropertyChanged;
this.IsLoadingData = false;
}