diff --git a/Toolkit.Foundation/Enumerate.cs b/Toolkit.Foundation/Enumerate.cs index 63aebe8..1f46636 100644 --- a/Toolkit.Foundation/Enumerate.cs +++ b/Toolkit.Foundation/Enumerate.cs @@ -1,3 +1,23 @@ namespace Toolkit.Foundation; -public record Enumerate(object? Key = null); \ No newline at end of file +public record Enumerate : IEnumerate +{ + public object? Key { get; init; } + + public static Enumerate With(TOptions options) where TOptions : class + { + return new Enumerate(options); + } +} + +public interface IEnumerate +{ + object? Key { get; init; } +} + + +public record Enumerate(TOptions? Options = null) : IEnumerate + where TOptions : class +{ + public object? Key { get; init; } +} \ No newline at end of file diff --git a/Toolkit.Foundation/ObservableCollectionViewModel.cs b/Toolkit.Foundation/ObservableCollectionViewModel.cs index 7aaa905..286da70 100644 --- a/Toolkit.Foundation/ObservableCollectionViewModel.cs +++ b/Toolkit.Foundation/ObservableCollectionViewModel.cs @@ -97,7 +97,7 @@ public partial class ObservableCollectionViewModel : public TViewModel this[int index] { - get => Count > 0 ? collection[index] : default; + get => collection[index]; set => SetItem(index, value); } @@ -299,21 +299,30 @@ public partial class ObservableCollectionViewModel : public async Task Initialize() { - if (isInitialized) + if (IsInitialized) { return; } - isInitialized = true; + IsInitialized = true; + await Enumerate(); + } + + public async Task Enumerate() + { + Clear(); object? key = this.GetAttribute() is NotificationAttribute attribute ? this.GetPropertyValue(() => attribute.Key) is { } value ? value : attribute.Key : null; - await Publisher.PublishUI(new Enumerate(key)); + await Publisher.PublishUI(CreateEnumeration(key)); } + protected virtual IEnumerate CreateEnumeration(object? key) => + new Enumerate() with { Key = key }; + public void Insert(int index, TViewModel item) => InsertItem(index, item); diff --git a/Toolkit.Foundation/Selected.cs b/Toolkit.Foundation/Selected.cs index da3d5e7..40a7e22 100644 --- a/Toolkit.Foundation/Selected.cs +++ b/Toolkit.Foundation/Selected.cs @@ -1,6 +1,6 @@ namespace Toolkit.Foundation; -public record Selected(TValue Value); +public record Selected(TValue? Value); public record Selected { diff --git a/Toolkit.Foundation/SubscriptionManager.cs b/Toolkit.Foundation/SubscriptionManager.cs index d6f92a5..a8aea60 100644 --- a/Toolkit.Foundation/SubscriptionManager.cs +++ b/Toolkit.Foundation/SubscriptionManager.cs @@ -5,6 +5,7 @@ public class SubscriptionManager(SubscriptionCollection subscriptions) : { public IEnumerable GetHandlers(Type notificationType, object key) { + var d = subscriptions; if (subscriptions.TryGetValue($"{(key is not null ? $"{key}:" : "")}{notificationType}", out List? subscribers)) {