private void OnDataCollectionChanged(object?sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) { if (e.NewItems != null) { foreach (ConditionSourcesJsonData data in e.NewItems) { PushAction(new CondtionSourcesListHistoryAction(in data, e.NewStartingIndex, SourcesListHistoryActionMode.ActionAdd, sourcesList)); } } } else if (e.Action == NotifyCollectionChangedAction.Remove) { if (e.OldItems != null) { foreach (ConditionSourcesJsonData data in e.OldItems) { PushAction(new CondtionSourcesListHistoryAction(in data, e.OldStartingIndex, SourcesListHistoryActionMode.ActionRemove, sourcesList)); } } } else if (e.Action == NotifyCollectionChangedAction.Replace) { if (e.NewItems != null && e.OldItems != null && e.NewItems.Count == e.OldItems.Count) { for (int i = 0; i < e.NewItems.Count; ++i) { ConditionSourcesJsonData oldItem = e.OldItems[i] is ConditionSourcesJsonData ? (ConditionSourcesJsonData)e.OldItems[i] ! : default; ConditionSourcesJsonData newItem = e.NewItems[i] is ConditionSourcesJsonData ? (ConditionSourcesJsonData)e.NewItems[i] ! : default; PushAction(new ConditionSourcesListHistoryReplaceAction(in oldItem, in newItem, e.NewStartingIndex, sourcesList)); } } } }
private void AddSource() { var obj = new ConditionSourcesJsonData(); obj.Id = SourceItems.Max(x => x.Id) + 1; obj.Name = "CONDITION_SOURCE_TYPE_"; OpenEditor(obj, true); }
private async Task OpenEditor(ConditionSourcesJsonData item, bool isCreating) { var vm = new ConditionSourceEditorViewModel(in item, parameterFactory, windowManager); if (await windowManager.ShowDialog(vm) && !vm.IsEmpty()) { if (isCreating) { SourceItems.Add(vm.Source.ToConditionSourcesJsonData()); } else { if (SelectedIndex >= 0) { SourceItems[SelectedIndex] = vm.Source.ToConditionSourcesJsonData(); } } } }