Я пытаюсь понять, как можно объединить х количество событий ObservableCollections.CollectionChanged, выставленных как дерево объектов глубины уровня N на одно родительский уровень. Событие CollectionChanged, которое могут слушать пользователи? По сути, я хочу, чтобы воронка или пузырь всех дочерних событий CollectionChanged до самого верхнего родителя. Ряд решений, которые я заметил, что решение подобных проблем делает предположение о фиксированном количестве уровней, скажем, 2 глубины. Я хочу поддерживать любой уровень глубины.Chain CollectionChanged Events
Первоначально я надеялся, что могу просто передать экземпляр FieldInfos дочерним конструкторам и подключиться непосредственно к обработчику. Однако я получаю сообщение об ошибке с указанием «Событие„CollectionChanged“может появиться только на левой стороне + = или -. =
Спасибо,
public class FieldInfos
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
private ObservableCollection<Field> _fields;
public ObservableCollection<Field> Fields => _fields ?? (_fields = new ObservableCollection<Field>());
}
public class Field
{
public string Name;
private ObservableCollection<FieldInstance> _instances;
public ObservableCollection<FieldInstance> Instances => _instances ?? (_instances = new ObservableCollection<FieldInstance>());
}
public class FieldInstance
{
public string Id { get; set; }
}
Чтобы сделать это, вам необходимо изменить 'ObservableCollection <>'. В противном случае вы можете создать шаблон фасада, чтобы сделать это - эффективно вы создали бы свой собственный класс «NestedObservableCollection <>», который обертывает внутренний 'ObservableCollection <>'. – Enigmativity
Не могли бы вы предоставить пример кода, который иллюстрирует, что вы предлагаете в качестве возможного решения? – Mike
@ Майк вы попробовали? – Asti