This commit is contained in:
neuecc 2024-10-03 10:19:16 +09:00
parent ee3281ab4a
commit 14893136e5
2 changed files with 9 additions and 3 deletions

View File

@ -8,11 +8,14 @@ using System.Collections.Generic;
var dict = new ObservableDictionary<int, string>(); var dict = new ObservableDictionary<int, string>();
var view = dict.CreateView(x => x).ToNotifyCollectionChanged(); var view = dict.CreateView(x => x);
view.AttachFilter(x => x.Key == 1);
var view2 = view.ToNotifyCollectionChanged();
dict.Add(key: 1, value: "foo"); dict.Add(key: 1, value: "foo");
dict.Add(key: 2, value: "bar"); dict.Add(key: 2, value: "bar");
foreach (var item in view) foreach (var item in view2)
{ {
Console.WriteLine(item); Console.WriteLine(item);
} }

View File

@ -197,6 +197,8 @@ internal class FiltableSynchronizedViewList<T, TView> : ISynchronizedViewList<TV
private void Parent_RejectedViewChanged(RejectedViewChangedAction arg1, int index, int oldIndex) private void Parent_RejectedViewChanged(RejectedViewChangedAction arg1, int index, int oldIndex)
{ {
if (index == -1) return;
lock (gate) lock (gate)
{ {
switch (arg1) switch (arg1)
@ -208,6 +210,7 @@ internal class FiltableSynchronizedViewList<T, TView> : ISynchronizedViewList<TV
listView.UpdateAlternateIndex(index, -1); listView.UpdateAlternateIndex(index, -1);
break; break;
case RejectedViewChangedAction.Move: case RejectedViewChangedAction.Move:
if (oldIndex == -1) return;
listView.TryReplaceAlternateIndex(oldIndex, index); listView.TryReplaceAlternateIndex(oldIndex, index);
break; break;
default: default:
@ -270,7 +273,7 @@ internal class NonFilteredSynchronizedViewList<T, TView> : ISynchronizedViewList
readonly ISynchronizedView<T, TView> parent; readonly ISynchronizedView<T, TView> parent;
protected readonly List<TView> listView; // no filter can be faster protected readonly List<TView> listView; // no filter can be faster
protected readonly object gate = new object(); protected readonly object gate = new object();
protected virtual bool IsSupportRangeFeature => true; protected virtual bool IsSupportRangeFeature => true;
public NonFilteredSynchronizedViewList(ISynchronizedView<T, TView> parent) public NonFilteredSynchronizedViewList(ISynchronizedView<T, TView> parent)