using System.ComponentModel; using System.Runtime.CompilerServices; using HandyControl.Collections; using SparkClient.ViewModel.Configuration; namespace SparkClient.Model.Entity; public class AgileJsonConfigEntity { // public readonly List Keys; private AlgorithmConfigVM ACVM; private ManualObservableCollection _runKey; public ManualObservableCollection RunKey { get => _runKey; set { _runKey = value; OnPropertyChanged(nameof(RunKey)); } } public AgileJsonConfigEntity(AlgorithmConfigVM acVM) { Shape = "圆形"; ModeValue = "999"; SpecValue = "999"; ACVM = acVM; RunKey = new ManualObservableCollection(acVM.JsonKeysBak); } private string _modeValue; public string ModeValue { get => _modeValue; set { SetField(ref _modeValue, value); OnPropertyChanged(nameof(ModeValue)); } } private string _specValue; public string SpecValue { get => _specValue; set { SetField(ref _specValue, value); OnPropertyChanged(nameof(SpecValue)); } } private string _shape; public string Shape { get => _shape; set => SetField(ref _shape, value); } private string _jsonKey; public string JsonKey { get => _jsonKey; set { SetField(ref _jsonKey, value); OnPropertyChanged(nameof(JsonKey)); FilterItems(value); } } private string _value; public string Value { get => _value; set => SetField(ref _value, value); } private void FilterItems(string key) { RunKey.CanNotify = false; RunKey.Clear(); foreach (var data in ACVM.JsonKeysBak) { if (data.ToLower().Contains(key.ToLower())) { RunKey.Add(data); } } if(RunKey.Count <= 0) RunKey.Add(key); RunKey.CanNotify = true; } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string name = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected bool SetField(ref T field, T value, [CallerMemberName] string name = null) { if (EqualityComparer.Default.Equals(field, value)) return false; field = value; OnPropertyChanged(name); return true; } }