I'm looking for an INotifyCollectionChanged implementation of Stack and Queue. I could roll my own but I don't want to reinvent the wheel.
With Stacks and Queues (almost by definition) you only have access to the top of the stack or head of the queue. It's what differentiates them from a List
. (and so, that's why you haven't found one)
To answer though you could write your own, I would do it by deriving from ObservableCollection
, then in the case of a stack implementing the Push
as an Insert
at offset 0 (and pop as returning index 0 then RemoveAt
index 0); or with a queue you could just Add
to the end of the list to Enqueue
, and the grab and remove the first item, as with the stack, for Dequeue
. The Insert
, Add
and RemoveAt
operations would be called on the underlying ObservableCollection
and so cause the CollectionChanged
event to be fired.
You might also be saying that you simply want to bind or be notified when the one item you are supposed to have access to changes. You would create your own class again, derived from Stack or Queue, and fire the CollectionChanged event manually when:
- Something is pushed onto or popped from a stack
- Something is dequeued from a queue
- Something is queued on the queue, when the queue was previously empty