RM
This commit is contained in:
parent
73c5b8e83e
commit
c1c9d86ff7
21
README.md
21
README.md
@ -238,7 +238,7 @@ class DescendantComaprer : IComparer<int>
|
|||||||
|
|
||||||
Reactive Extensions with R3
|
Reactive Extensions with R3
|
||||||
---
|
---
|
||||||
Once the R3 extension package is installed, you can subscribe to `ObserveChanged`, `ObserveAdd`, `ObserveRemove`, `ObserveReplace`, `ObserveMove`, `ObserveReset`, `ObserveClear`, `ObserveReverse`, `ObserveSort` events as Rx, allowing you to compose events individually.
|
Once the R3 extension package is installed, you can subscribe to `ObserveChanged`, `ObserveAdd`, `ObserveRemove`, `ObserveReplace`, `ObserveMove`, `ObserveReset`, `ObserveClear`, `ObserveReverse`, `ObserveSort`, `ObserveCounteChanged` events as Rx, allowing you to compose events individually.
|
||||||
|
|
||||||
> dotnet add package [ObservableCollections.R3](https://www.nuget.org/packages/ObservableCollections.R3)
|
> dotnet add package [ObservableCollections.R3](https://www.nuget.org/packages/ObservableCollections.R3)
|
||||||
|
|
||||||
@ -260,6 +260,8 @@ list.AddRange(new[] { 10, 20, 30 });
|
|||||||
|
|
||||||
Note that `ObserveReset` is used to subscribe to Clear, Reverse, and Sort operations in bulk.
|
Note that `ObserveReset` is used to subscribe to Clear, Reverse, and Sort operations in bulk.
|
||||||
|
|
||||||
|
In addition to `IObservableCollection<T>`, there is also a subscription event for `ISynchronizedView<T, TView>`. In the case of View, `ObserveRejected` is also added.
|
||||||
|
|
||||||
Since it is not supported by dotnet/reactive, please use the Rx library [R3](https://github.com/Cysharp/R3).
|
Since it is not supported by dotnet/reactive, please use the Rx library [R3](https://github.com/Cysharp/R3).
|
||||||
|
|
||||||
Blazor
|
Blazor
|
||||||
@ -553,7 +555,7 @@ public enum RejectedViewChangedAction
|
|||||||
public interface ISynchronizedView<T, TView> : IReadOnlyCollection<TView>, IDisposable
|
public interface ISynchronizedView<T, TView> : IReadOnlyCollection<TView>, IDisposable
|
||||||
{
|
{
|
||||||
object SyncRoot { get; }
|
object SyncRoot { get; }
|
||||||
ISynchronizedViewFilter<T> Filter { get; }
|
ISynchronizedViewFilter<T, TView> Filter { get; }
|
||||||
IEnumerable<(T Value, TView View)> Filtered { get; }
|
IEnumerable<(T Value, TView View)> Filtered { get; }
|
||||||
IEnumerable<(T Value, TView View)> Unfiltered { get; }
|
IEnumerable<(T Value, TView View)> Unfiltered { get; }
|
||||||
int UnfilteredCount { get; }
|
int UnfilteredCount { get; }
|
||||||
@ -562,7 +564,7 @@ public interface ISynchronizedView<T, TView> : IReadOnlyCollection<TView>, IDisp
|
|||||||
event Action<RejectedViewChangedAction, int, int>? RejectedViewChanged; // int index, int oldIndex(when RejectedViewChangedAction is Move)
|
event Action<RejectedViewChangedAction, int, int>? RejectedViewChanged; // int index, int oldIndex(when RejectedViewChangedAction is Move)
|
||||||
event Action<NotifyCollectionChangedAction>? CollectionStateChanged;
|
event Action<NotifyCollectionChangedAction>? CollectionStateChanged;
|
||||||
|
|
||||||
void AttachFilter(ISynchronizedViewFilter<T> filter);
|
void AttachFilter(ISynchronizedViewFilter<T, TView> filter);
|
||||||
void ResetFilter();
|
void ResetFilter();
|
||||||
ISynchronizedViewList<TView> ToViewList();
|
ISynchronizedViewList<TView> ToViewList();
|
||||||
NotifyCollectionChangedSynchronizedViewList<TView> ToNotifyCollectionChanged();
|
NotifyCollectionChangedSynchronizedViewList<TView> ToNotifyCollectionChanged();
|
||||||
@ -611,9 +613,9 @@ When `IsReverse` is true, you need to use `Index` and `Count`. When `IsSort` is
|
|||||||
For Filter, you can either create one that implements this interface or generate one from a lambda expression using extension methods.
|
For Filter, you can either create one that implements this interface or generate one from a lambda expression using extension methods.
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
public interface ISynchronizedViewFilter<T>
|
public interface ISynchronizedViewFilter<T, TView>
|
||||||
{
|
{
|
||||||
bool IsMatch(T value);
|
bool IsMatch(T value, TView view);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class SynchronizedViewExtensions
|
public static class SynchronizedViewExtensions
|
||||||
@ -621,6 +623,10 @@ public static class SynchronizedViewExtensions
|
|||||||
public static void AttachFilter<T, TView>(this ISynchronizedView<T, TView> source, Func<T, bool> filter)
|
public static void AttachFilter<T, TView>(this ISynchronizedView<T, TView> source, Func<T, bool> filter)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void AttachFilter<T, TView>(this ISynchronizedView<T, TView> source, Func<T, TView, bool> filter)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -644,6 +650,11 @@ public interface IWritableSynchronizedView<T, TView> : ISynchronizedView<T, TVie
|
|||||||
(T Value, TView View) GetAt(int index);
|
(T Value, TView View) GetAt(int index);
|
||||||
void SetViewAt(int index, TView view);
|
void SetViewAt(int index, TView view);
|
||||||
void SetToSourceCollection(int index, T value);
|
void SetToSourceCollection(int index, T value);
|
||||||
|
void AddToSourceCollection(T value);
|
||||||
|
void InsertIntoSourceCollection(int index, T value);
|
||||||
|
bool RemoveFromSourceCollection(T value);
|
||||||
|
void RemoveAtSourceCollection(int index);
|
||||||
|
void ClearSourceCollection();
|
||||||
IWritableSynchronizedViewList<TView> ToWritableViewList(WritableViewChangedEventHandler<T, TView> converter);
|
IWritableSynchronizedViewList<TView> ToWritableViewList(WritableViewChangedEventHandler<T, TView> converter);
|
||||||
INotifyCollectionChangedSynchronizedViewList<TView> ToWritableNotifyCollectionChanged(WritableViewChangedEventHandler<T, TView> converter);
|
INotifyCollectionChangedSynchronizedViewList<TView> ToWritableNotifyCollectionChanged(WritableViewChangedEventHandler<T, TView> converter);
|
||||||
INotifyCollectionChangedSynchronizedViewList<TView> ToWritableNotifyCollectionChanged(WritableViewChangedEventHandler<T, TView> converter, ICollectionEventDispatcher? collectionEventDispatcher);
|
INotifyCollectionChangedSynchronizedViewList<TView> ToWritableNotifyCollectionChanged(WritableViewChangedEventHandler<T, TView> converter, ICollectionEventDispatcher? collectionEventDispatcher);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user