Dictionary FilteredView add operation adds last
This commit is contained in:
parent
b0bc7c2151
commit
9c4f7b2d9e
@ -7,36 +7,17 @@ using System.Collections;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
|
||||||
|
var dict = new ObservableDictionary<int, string>();
|
||||||
|
var view = dict.CreateView(x => x).ToNotifyCollectionChanged();
|
||||||
|
dict.Add(key: 1, value: "foo");
|
||||||
|
dict.Add(key: 2, value: "bar");
|
||||||
|
|
||||||
|
foreach (var item in view)
|
||||||
// Queue <-> List Synchronization
|
|
||||||
var queue = new ObservableQueue<int>();
|
|
||||||
|
|
||||||
queue.Enqueue(1);
|
|
||||||
queue.Enqueue(10);
|
|
||||||
queue.Enqueue(100);
|
|
||||||
queue.Enqueue(1000);
|
|
||||||
queue.Enqueue(10000);
|
|
||||||
|
|
||||||
using var view = queue.CreateView(x => x.ToString() + "$");
|
|
||||||
|
|
||||||
using var viewList = view.ToViewList();
|
|
||||||
|
|
||||||
Console.WriteLine(viewList[2]); // 100$
|
|
||||||
|
|
||||||
|
|
||||||
view.ViewChanged += View_ViewChanged;
|
|
||||||
|
|
||||||
void View_ViewChanged(in SynchronizedViewChangedEventArgs<int, string> eventArgs)
|
|
||||||
{
|
{
|
||||||
if (eventArgs.Action == NotifyCollectionChangedAction.Add)
|
Console.WriteLine(item);
|
||||||
{
|
|
||||||
// eventArgs.OldItem.View.
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ViewModel
|
class ViewModel
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
@ -64,9 +64,20 @@ internal class FiltableSynchronizedViewList<T, TView> : ISynchronizedViewList<TV
|
|||||||
case NotifyCollectionChangedAction.Add: // Add or Insert
|
case NotifyCollectionChangedAction.Add: // Add or Insert
|
||||||
if (e.IsSingleItem)
|
if (e.IsSingleItem)
|
||||||
{
|
{
|
||||||
var index = listView.Insert(e.NewStartingIndex, e.NewItem.View);
|
if (e.OldStartingIndex == -1)
|
||||||
OnCollectionChanged(e.WithNewStartingIndex(index));
|
{
|
||||||
return;
|
// add operation
|
||||||
|
var index = listView.Count;
|
||||||
|
listView.Insert(index, e.NewItem.View);
|
||||||
|
OnCollectionChanged(e.WithNewStartingIndex(index));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var index = listView.Insert(e.NewStartingIndex, e.NewItem.View);
|
||||||
|
OnCollectionChanged(e.WithNewStartingIndex(index));
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user