diff --git a/Framework/Avalonia/Avalonia.csproj b/Framework/Avalonia/Avalonia.csproj index b097d4d..63d5b85 100644 --- a/Framework/Avalonia/Avalonia.csproj +++ b/Framework/Avalonia/Avalonia.csproj @@ -3,8 +3,8 @@ net7.0 enable enable - Toolkit.Foundation.Avalonia - Toolkit.Foundation.Avalonia + Toolkit.Framework.Avalonia + Toolkit.Framework.Avalonia diff --git a/Framework/Avalonia/Extensions/EventArgsExtensions.cs b/Framework/Avalonia/Extensions/EventArgsExtensions.cs index 9e80244..9299fe5 100644 --- a/Framework/Avalonia/Extensions/EventArgsExtensions.cs +++ b/Framework/Avalonia/Extensions/EventArgsExtensions.cs @@ -1,24 +1,23 @@ using Avalonia.Data.Converters; using System.Globalization; -namespace Toolkit.Foundation.Avalonia +namespace Toolkit.Foundation.Avalonia; + +public static class EventArgsExtensions { - public static class EventArgsExtensions + public static dynamic? GetEventArguments(this EventArgs args, string? path, IValueConverter? converter, object? converterParameter) { - public static dynamic? GetEventArguments(this EventArgs args, string? path, IValueConverter? converter, object? converterParameter) + return !string.IsNullOrWhiteSpace(path) ? GetEventArgsPropertyPathValue(args, path) : converter is not null ? converter.Convert(args, typeof(object), converterParameter, CultureInfo.CurrentCulture) : (dynamic)args; + } + + private static object GetEventArgsPropertyPathValue(object args, string path) + { + object? value = args; + if (path is { }) { - return !string.IsNullOrWhiteSpace(path) ? GetEventArgsPropertyPathValue(args, path) : converter is not null ? converter.Convert(args, typeof(object), converterParameter, CultureInfo.CurrentCulture) : (dynamic)args; + value = PropertyPathHelper.GetValue(args, path); } - private static object GetEventArgsPropertyPathValue(object args, string path) - { - object? value = args; - if (path is { }) - { - value = PropertyPathHelper.GetValue(args, path); - } - - return value; - } + return value; } } \ No newline at end of file diff --git a/Framework/Avalonia/Extensions/IHostBuilderExtensions.cs b/Framework/Avalonia/Extensions/IHostBuilderExtensions.cs index d747174..c9a12d8 100644 --- a/Framework/Avalonia/Extensions/IHostBuilderExtensions.cs +++ b/Framework/Avalonia/Extensions/IHostBuilderExtensions.cs @@ -3,33 +3,32 @@ using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia +namespace Toolkit.Foundation.Avalonia; + +public static class IHostBuilderExtensions { - public static class IHostBuilderExtensions + public static IHostBuilder ConfigureTemplates(this IHostBuilder hostBuilder, Action builderDelegate) { - public static IHostBuilder ConfigureTemplates(this IHostBuilder hostBuilder, Action builderDelegate) + hostBuilder.ConfigureServices((hostBuilderContext, serviceCollection) => { - hostBuilder.ConfigureServices((hostBuilderContext, serviceCollection) => + TemplateBuilder? builder = new(); + builderDelegate?.Invoke(builder); + + serviceCollection.TryAddSingleton(builder.Descriptors); + serviceCollection.TryAddSingleton(); + serviceCollection.TryAddSingleton(); + serviceCollection.TryAddSingleton(); + serviceCollection.TryAddSingleton(); + serviceCollection.TryAddSingleton(); + serviceCollection.TryAddSingleton(); + + foreach (ITemplateDescriptor? descriptor in builder.Descriptors) { - TemplateBuilder? builder = new(); - builderDelegate?.Invoke(builder); + serviceCollection.Add(new ServiceDescriptor(descriptor.TemplateType, descriptor.TemplateType, descriptor.Lifetime)); + serviceCollection.Add(new ServiceDescriptor(descriptor.ContentType, descriptor.ContentType, descriptor.Lifetime)); + } + }); - serviceCollection.TryAddSingleton(builder.Descriptors); - serviceCollection.TryAddSingleton(); - serviceCollection.TryAddSingleton(); - serviceCollection.TryAddSingleton(); - serviceCollection.TryAddSingleton(); - serviceCollection.TryAddSingleton(); - serviceCollection.TryAddSingleton(); - - foreach (ITemplateDescriptor? descriptor in builder.Descriptors) - { - serviceCollection.Add(new ServiceDescriptor(descriptor.TemplateType, descriptor.TemplateType, descriptor.Lifetime)); - serviceCollection.Add(new ServiceDescriptor(descriptor.ContentType, descriptor.ContentType, descriptor.Lifetime)); - } - }); - - return hostBuilder; - } + return hostBuilder; } } \ No newline at end of file diff --git a/Framework/Avalonia/Extensions/IServiceCollectionExtensions.cs b/Framework/Avalonia/Extensions/IServiceCollectionExtensions.cs index dd0f99e..6858114 100644 --- a/Framework/Avalonia/Extensions/IServiceCollectionExtensions.cs +++ b/Framework/Avalonia/Extensions/IServiceCollectionExtensions.cs @@ -4,19 +4,18 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia +namespace Toolkit.Foundation.Avalonia; + +public static class IServiceCollectionExtensions { - public static class IServiceCollectionExtensions + public static IServiceCollection AddNavigation(this IServiceCollection serviceCollection) { - public static IServiceCollection AddNavigation(this IServiceCollection serviceCollection) - { - serviceCollection.TryAddSingleton(); + serviceCollection.TryAddSingleton(); - serviceCollection.TryAddTransient, FrameNavigation>(); - serviceCollection.TryAddTransient, ContentDialogNavigation>(); - serviceCollection.TryAddTransient, ContentControlNavigation>(); + serviceCollection.TryAddTransient, FrameNavigation>(); + serviceCollection.TryAddTransient, ContentDialogNavigation>(); + serviceCollection.TryAddTransient, ContentControlNavigation>(); - return serviceCollection; - } + return serviceCollection; } } \ No newline at end of file diff --git a/Framework/Avalonia/Extensions/MarkupExtensions.cs b/Framework/Avalonia/Extensions/MarkupExtensions.cs index a2085fa..f119b93 100644 --- a/Framework/Avalonia/Extensions/MarkupExtensions.cs +++ b/Framework/Avalonia/Extensions/MarkupExtensions.cs @@ -1,17 +1,16 @@ using Avalonia.Data; -namespace Toolkit.Foundation.Avalonia -{ - public static class MarkupExtensions - { - public static Binding? ToBinding(this object value) - { - if (value is Binding) - { - return value as Binding; - } +namespace Toolkit.Foundation.Avalonia; - return new Binding { Mode = BindingMode.OneWay, Source = value }; +public static class MarkupExtensions +{ + public static Binding? ToBinding(this object value) + { + if (value is Binding) + { + return value as Binding; } + + return new Binding { Mode = BindingMode.OneWay, Source = value }; } } \ No newline at end of file diff --git a/Framework/Avalonia/Extensions/PropertyPathHelper..cs b/Framework/Avalonia/Extensions/PropertyPathHelper..cs index b25e696..819e994 100644 --- a/Framework/Avalonia/Extensions/PropertyPathHelper..cs +++ b/Framework/Avalonia/Extensions/PropertyPathHelper..cs @@ -1,28 +1,27 @@ using Avalonia; using Avalonia.Data; -namespace Toolkit.Foundation.Avalonia +namespace Toolkit.Foundation.Avalonia; + +public static class PropertyPathHelper { - public static class PropertyPathHelper + private static readonly Dummy dummy = new(); + + public static object GetValue(object args, string path) { - private static readonly Dummy dummy = new(); - - public static object GetValue(object args, string path) + Binding binding = new(path) { - Binding binding = new(path) - { - Mode = BindingMode.OneTime, - Source = args - }; + Mode = BindingMode.OneTime, + Source = args + }; - dummy.Bind(Dummy.ValueProperty, binding); - return dummy.GetValue(Dummy.ValueProperty); - } + dummy.Bind(Dummy.ValueProperty, binding); + return dummy.GetValue(Dummy.ValueProperty); + } - private class Dummy : AvaloniaObject - { - public static readonly StyledProperty ValueProperty = - AvaloniaProperty.Register("Value"); - } + private class Dummy : AvaloniaObject + { + public static readonly StyledProperty ValueProperty = + AvaloniaProperty.Register("Value"); } } \ No newline at end of file diff --git a/Framework/Avalonia/Markups/CompositeExtension.cs b/Framework/Avalonia/Markups/CompositeExtension.cs index cca6f53..a0e00e2 100644 --- a/Framework/Avalonia/Markups/CompositeExtension.cs +++ b/Framework/Avalonia/Markups/CompositeExtension.cs @@ -1,6 +1,6 @@ using Avalonia.Markup.Xaml; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class CompositeExtension : TriggerExtension { diff --git a/Framework/Avalonia/Markups/EventParameterExtension.cs b/Framework/Avalonia/Markups/EventParameterExtension.cs index af60f38..63c72fe 100644 --- a/Framework/Avalonia/Markups/EventParameterExtension.cs +++ b/Framework/Avalonia/Markups/EventParameterExtension.cs @@ -1,7 +1,7 @@ using Avalonia.Data.Converters; using Avalonia.Markup.Xaml; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class EventParameterExtension : MarkupExtension, IEventParameter { diff --git a/Framework/Avalonia/Markups/InvokeExtension.cs b/Framework/Avalonia/Markups/InvokeExtension.cs index c11ed7a..3ceb987 100644 --- a/Framework/Avalonia/Markups/InvokeExtension.cs +++ b/Framework/Avalonia/Markups/InvokeExtension.cs @@ -5,7 +5,7 @@ using Avalonia.Markup.Xaml; using System.Diagnostics.CodeAnalysis; using System.Reflection; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class InvokeExtension : TriggerExtension { diff --git a/Framework/Avalonia/Markups/NavigateExtension.cs b/Framework/Avalonia/Markups/NavigateExtension.cs index 296ed89..dd1806a 100644 --- a/Framework/Avalonia/Markups/NavigateExtension.cs +++ b/Framework/Avalonia/Markups/NavigateExtension.cs @@ -5,7 +5,7 @@ using Avalonia.Markup.Xaml; using Mediator; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class NavigateExtension : TriggerExtension { diff --git a/Framework/Avalonia/Markups/NavigationRouteExtension.cs b/Framework/Avalonia/Markups/NavigationRouteExtension.cs index 6d83540..9474085 100644 --- a/Framework/Avalonia/Markups/NavigationRouteExtension.cs +++ b/Framework/Avalonia/Markups/NavigationRouteExtension.cs @@ -7,7 +7,7 @@ using Avalonia.Markup.Xaml; using Mediator; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class NavigationRouteExtension : MarkupExtension { diff --git a/Framework/Avalonia/Markups/ParameterBindingExtension.cs b/Framework/Avalonia/Markups/ParameterBindingExtension.cs index d03acea..97c73c3 100644 --- a/Framework/Avalonia/Markups/ParameterBindingExtension.cs +++ b/Framework/Avalonia/Markups/ParameterBindingExtension.cs @@ -4,7 +4,7 @@ using Avalonia.Data; using Avalonia.Markup.Xaml; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class ParameterBindingExtension : MarkupExtension, IParameter { diff --git a/Framework/Avalonia/Markups/TriggerCollection.cs b/Framework/Avalonia/Markups/TriggerCollection.cs index 4466573..8e60015 100644 --- a/Framework/Avalonia/Markups/TriggerCollection.cs +++ b/Framework/Avalonia/Markups/TriggerCollection.cs @@ -1,6 +1,6 @@ using System.Collections.ObjectModel; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class TriggerCollection : Collection { diff --git a/Framework/Avalonia/Markups/TriggerExtension.cs b/Framework/Avalonia/Markups/TriggerExtension.cs index 0e9260c..50ba927 100644 --- a/Framework/Avalonia/Markups/TriggerExtension.cs +++ b/Framework/Avalonia/Markups/TriggerExtension.cs @@ -2,7 +2,7 @@ using Avalonia.Markup.Xaml; using System.Reflection; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class TriggerExtension : MarkupExtension { diff --git a/Framework/Avalonia/Navigation/ContentControlNavigation.cs b/Framework/Avalonia/Navigation/ContentControlNavigation.cs index 6f34662..82a4f3e 100644 --- a/Framework/Avalonia/Navigation/ContentControlNavigation.cs +++ b/Framework/Avalonia/Navigation/ContentControlNavigation.cs @@ -1,6 +1,6 @@ using Avalonia.Controls; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public record ContentControlNavigation : Navigation { diff --git a/Framework/Avalonia/Navigation/ContentControlNavigationHandler.cs b/Framework/Avalonia/Navigation/ContentControlNavigationHandler.cs index 501d277..5ee2098 100644 --- a/Framework/Avalonia/Navigation/ContentControlNavigationHandler.cs +++ b/Framework/Avalonia/Navigation/ContentControlNavigationHandler.cs @@ -1,7 +1,7 @@ using Avalonia.Controls.Primitives; using Mediator; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class ContentControlNavigationHandler : IRequestHandler { diff --git a/Framework/Avalonia/Navigation/ContentDialogNavigation.cs b/Framework/Avalonia/Navigation/ContentDialogNavigation.cs index bbad968..3ed4540 100644 --- a/Framework/Avalonia/Navigation/ContentDialogNavigation.cs +++ b/Framework/Avalonia/Navigation/ContentDialogNavigation.cs @@ -1,6 +1,6 @@ using FluentAvalonia.UI.Controls; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public record ContentDialogNavigation : Navigation { diff --git a/Framework/Avalonia/Navigation/ContentDialogNavigationHandler.cs b/Framework/Avalonia/Navigation/ContentDialogNavigationHandler.cs index 689e4a2..439d470 100644 --- a/Framework/Avalonia/Navigation/ContentDialogNavigationHandler.cs +++ b/Framework/Avalonia/Navigation/ContentDialogNavigationHandler.cs @@ -1,7 +1,7 @@ using FluentAvalonia.UI.Controls; using Mediator; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class ContentDialogNavigationHandler : IRequestHandler { diff --git a/Framework/Avalonia/Navigation/FrameNavigation.cs b/Framework/Avalonia/Navigation/FrameNavigation.cs index 3210d28..28c00b7 100644 --- a/Framework/Avalonia/Navigation/FrameNavigation.cs +++ b/Framework/Avalonia/Navigation/FrameNavigation.cs @@ -1,6 +1,6 @@ using FluentAvalonia.UI.Controls; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public record FrameNavigation : Navigation { diff --git a/Framework/Avalonia/Navigation/FrameNavigationHandler.cs b/Framework/Avalonia/Navigation/FrameNavigationHandler.cs index ad65a74..7428840 100644 --- a/Framework/Avalonia/Navigation/FrameNavigationHandler.cs +++ b/Framework/Avalonia/Navigation/FrameNavigationHandler.cs @@ -2,7 +2,7 @@ using FluentAvalonia.UI.Navigation; using Mediator; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class FrameNavigationHandler : IRequestHandler { diff --git a/Framework/Avalonia/Navigation/NavigateBackHandler.cs b/Framework/Avalonia/Navigation/NavigateBackHandler.cs index 2b5a248..e937fef 100644 --- a/Framework/Avalonia/Navigation/NavigateBackHandler.cs +++ b/Framework/Avalonia/Navigation/NavigateBackHandler.cs @@ -4,7 +4,7 @@ using FluentAvalonia.UI.Controls; using Mediator; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class NavigateBackHandler : IRequestHandler { diff --git a/Framework/Avalonia/Navigation/NavigateHandler.cs b/Framework/Avalonia/Navigation/NavigateHandler.cs index 03563f4..c41bf66 100644 --- a/Framework/Avalonia/Navigation/NavigateHandler.cs +++ b/Framework/Avalonia/Navigation/NavigateHandler.cs @@ -3,7 +3,7 @@ using FluentAvalonia.UI.Controls; using Mediator; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class NavigateHandler : IRequestHandler { diff --git a/Framework/Avalonia/Navigation/Navigation.cs b/Framework/Avalonia/Navigation/Navigation.cs index 20d757d..e695017 100644 --- a/Framework/Avalonia/Navigation/Navigation.cs +++ b/Framework/Avalonia/Navigation/Navigation.cs @@ -1,7 +1,7 @@ using Avalonia.Controls.Primitives; using Mediator; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public record Navigation : IRequest where TRoute : TemplatedControl { diff --git a/Framework/Avalonia/Navigation/NavigationPageFactory.cs b/Framework/Avalonia/Navigation/NavigationPageFactory.cs index 734a322..109fd52 100644 --- a/Framework/Avalonia/Navigation/NavigationPageFactory.cs +++ b/Framework/Avalonia/Navigation/NavigationPageFactory.cs @@ -1,7 +1,7 @@ using Avalonia.Controls; using FluentAvalonia.UI.Controls; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; internal class NavigationPageFactory : INavigationPageFactory { diff --git a/Framework/Avalonia/Navigation/NavigationRouteHandler.cs b/Framework/Avalonia/Navigation/NavigationRouteHandler.cs index 3a7d7bd..b38d259 100644 --- a/Framework/Avalonia/Navigation/NavigationRouteHandler.cs +++ b/Framework/Avalonia/Navigation/NavigationRouteHandler.cs @@ -3,7 +3,7 @@ using Avalonia.Interactivity; using Mediator; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia; +namespace Toolkit.Framework.Avalonia; public class NavigationRouteHandler : IRequestHandler { diff --git a/Framework/Avalonia/Templates/TemplateSelector.cs b/Framework/Avalonia/Templates/TemplateSelector.cs index 5d6ff9c..1b60f4e 100644 --- a/Framework/Avalonia/Templates/TemplateSelector.cs +++ b/Framework/Avalonia/Templates/TemplateSelector.cs @@ -2,37 +2,36 @@ using Avalonia.Controls.Templates; using Toolkit.Framework.Foundation; -namespace Toolkit.Foundation.Avalonia +namespace Toolkit.Foundation.Avalonia; + +public class TemplateSelector : IDataTemplate, ITemplateSelector { - public class TemplateSelector : IDataTemplate, ITemplateSelector + private readonly Dictionary dataTracking = new(); + + private readonly ITemplateFactory templateFactory; + + public TemplateSelector(ITemplateFactory templateFactory) { - private readonly Dictionary dataTracking = new(); + this.templateFactory = templateFactory; + } - private readonly ITemplateFactory templateFactory; - - public TemplateSelector(ITemplateFactory templateFactory) + public IControl? Build(object? item) + { + if (item is not null) { - this.templateFactory = templateFactory; - } - - public IControl? Build(object? item) - { - if (item is not null) + if (dataTracking.TryGetValue(item, out IControl? control)) { - if (dataTracking.TryGetValue(item, out IControl? control)) - { - return control; - } - - return (IControl?)templateFactory.Create(item); + return control; } - return null; + return (IControl?)templateFactory.Create(item); } - public bool Match(object? data) - { - return true; - } + return null; + } + + public bool Match(object? data) + { + return true; } } \ No newline at end of file diff --git a/Framework/Foundation/Foundation.csproj b/Framework/Foundation/Foundation.csproj index cf587bd..5357ee8 100644 --- a/Framework/Foundation/Foundation.csproj +++ b/Framework/Foundation/Foundation.csproj @@ -4,8 +4,8 @@ net7.0 enable enable - Toolkit.Foundation - Toolkit.Foundation + Toolkit.Framework.Foundation + Toolkit.Framework.Foundation diff --git a/Framework/Foundation/Navigation/IEventParameter.cs b/Framework/Foundation/Navigation/IEventParameter.cs index 320adce..9c7eaa1 100644 --- a/Framework/Foundation/Navigation/IEventParameter.cs +++ b/Framework/Foundation/Navigation/IEventParameter.cs @@ -1,4 +1,4 @@ -namespace Toolkit.Foundation; +namespace Toolkit.Framework.Foundation; public interface IEventParameter { diff --git a/Framework/Foundation/Navigation/INavigationConfirmation.cs b/Framework/Foundation/Navigation/INavigationConfirmation.cs index 4143657..eb53fca 100644 --- a/Framework/Foundation/Navigation/INavigationConfirmation.cs +++ b/Framework/Foundation/Navigation/INavigationConfirmation.cs @@ -1,4 +1,4 @@ -namespace Toolkit.Foundation; +namespace Toolkit.Framework.Foundation; public interface INavigationConfirmation {