С помощью стеков и очередей (почти по определению) у вас есть доступ только к вершине стека или началу очереди. Это то, что отличает их от List
. (и поэтому вы его не нашли)
Чтобы ответить, хотя вы могли бы написать свой собственный, я бы сделал это, выведя из ObservableCollection
, затем в случае стека, реализующего Push
как Insert
со смещением 0 (и выдаваемый как возвращающий индекс 0 затем RemoveAt
индекс 0); или с очередью вы можете просто Add
до конца списка набрать Enqueue
, а затем взять и удалить первый элемент, как со стеком, для Dequeue
. Операции Insert
, Add
и RemoveAt
будут вызваны для базового ObservableCollection
, что вызовет событие CollectionChanged
.
Возможно, вы также говорите, что просто хотите связать или получить уведомление, когда один элемент, к которому вы должны иметь доступ, изменится. Вы снова создадите свой собственный класс, полученный из стека или очереди, и запустите событие CollectionChanged вручную, когда:
- Что-то помещено в стек или извлечено из него
- Из очереди что-то исключено
- Что-то в очереди в очереди, когда очередь ранее была пустой