/// <summary> /// Добавление фильтра в коллекцию дочерних /// </summary> /// <param name="filterWrapper">Фильтр</param> /// <param name="filterStatus">Статус добавляемого фильтра</param> public void AddFilter(FilterWrapper filterWrapper, FilterStatus filterStatus) { filterWrapper.FilterStatus = filterStatus; filterWrapper.PropertyChanged += FilterWrapperOnPropertyChanged; _filters.Add(filterWrapper); OnFilterAdded?.Invoke(this, EventArgs.Empty); }
/// <summary> /// Initializes a new instance of the <see cref="FilterWrapper"/> class. /// </summary> /// <param name="parent">Родительский шаблон</param> /// <param name="filter">Фильтр-исходник</param> public FilterWrapper(ViewWrapper parent, FilterWrapper filter) { FilterId = filter.FilterId; Name = filter.Name; NameUpperCase = filter.NameUpperCase; OriginalParent = filter.OriginalParent; Parent = parent; }
/// <summary> /// Содержит ли шаблон такой фильтр с проверкой по Id /// </summary> /// <param name="filter">Фильтр</param> public bool ContainsFilter(FilterWrapper filter) { foreach (var filterWrapper in Filters) { if (filterWrapper.FilterId.IntegerValue == filter.FilterId.IntegerValue) { return(true); } } return(false); }
/// <summary> /// Удалить или пометить как "Удаляемый" дочерний фильтр /// </summary> /// <param name="filter">Фильтр</param> public void RemoveFilter(FilterWrapper filter) { if (filter.FilterStatus == FilterStatus.New) { filter.PropertyChanged -= FilterWrapperOnPropertyChanged; _filters.Remove(filter); OnFilterRemoved?.Invoke(this, EventArgs.Empty); } else { filter.FilterStatus = FilterStatus.Remove; } }
/// <summary> /// Initializes a new instance of the <see cref="ViewWrapper"/> class. /// </summary> /// <param name="view">Вид</param> public ViewWrapper(View view) { View = view; Name = view.Name; NameUpperCase = Name.ToUpper(); IsTemplate = view.IsTemplate; ViewTypeGroup = GetViewTypeGroup(view); var filters = view.GetFilters().ToList(); var filterWrappers = new List <FilterWrapper>(); foreach (var elementId in filters) { var filterWrapper = new FilterWrapper(this, elementId); filterWrapper.PropertyChanged += FilterWrapperOnPropertyChanged; filterWrappers.Add(filterWrapper); } _filters = new ObservableCollection <FilterWrapper>(filterWrappers.OrderBy(w => w.Name)); Filters = new ReadOnlyObservableCollection <FilterWrapper>(_filters); }