Проблемы с Catel в WPF, перезагружается с InterestedIn ViewModel - PullRequest
0 голосов
/ 10 января 2019

Итак, у меня есть модель представления с именем 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;

}

1 Ответ

0 голосов
/ 10 января 2019

Используемая версия устарела (с ноября 2015 г.). Пожалуйста, обновите версию не ниже 5.x (выпуск в июле 2016 г.), чтобы получить исчерпывающие ответы.

Даже если вы нашли ошибку, команда не исправит ее в такой старой версии. Кроме того, функция InterestedIn была удалена в Catel в пользу услуг или MessageMediator.

Если нет, если это вариант, я рекомендую использовать другой вид коммуникационных технологий для решения проблемы (например, услуга).

...