Пример #1
0
 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();
                    }
                }
            }
        }