diff --git a/Toolkit.Foundation.Avalonia/Extensions/EventArgsExtensions.cs b/Toolkit.Foundation.Avalonia/Extensions/EventArgsExtensions.cs index 82376d0..33807bf 100644 --- a/Toolkit.Foundation.Avalonia/Extensions/EventArgsExtensions.cs +++ b/Toolkit.Foundation.Avalonia/Extensions/EventArgsExtensions.cs @@ -1,10 +1,8 @@ -using Avalonia; -using Avalonia.Data.Converters; +using Avalonia.Data.Converters; using System.Globalization; namespace Toolkit.Foundation.Avalonia { - public static class EventArgsExtensions { public static dynamic? GetEventArguments(this EventArgs args, string? path, IValueConverter? converter, object? converterParameter) diff --git a/Toolkit.Foundation.Avalonia/Extensions/IHostBuilderExtensions.cs b/Toolkit.Foundation.Avalonia/Extensions/IHostBuilderExtensions.cs new file mode 100644 index 0000000..6905859 --- /dev/null +++ b/Toolkit.Foundation.Avalonia/Extensions/IHostBuilderExtensions.cs @@ -0,0 +1,36 @@ +using Avalonia.Platform; +using Avalonia; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.Hosting; + +namespace Toolkit.Foundation.Avalonia +{ + public static class IHostBuilderExtensions + { + public static IHostBuilder ConfigureTemplates(this IHostBuilder hostBuilder, Action builderDelegate) + { + 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) + { + serviceCollection.Add(new ServiceDescriptor(descriptor.TemplateType, descriptor.TemplateType, descriptor.Lifetime)); + serviceCollection.Add(new ServiceDescriptor(descriptor.DataType, descriptor.DataType, descriptor.Lifetime)); + } + }); + + return hostBuilder; + } + } +} diff --git a/Toolkit.Foundation.Avalonia/Extensions/IServiceCollectionExtensions.cs b/Toolkit.Foundation.Avalonia/Extensions/IServiceCollectionExtensions.cs new file mode 100644 index 0000000..051f89d --- /dev/null +++ b/Toolkit.Foundation.Avalonia/Extensions/IServiceCollectionExtensions.cs @@ -0,0 +1,16 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; + +namespace Toolkit.Foundation.Avalonia +{ + public static class IServiceCollectionExtensions + { + public static IServiceCollection AddNavigation(this IServiceCollection serviceCollection) + { + serviceCollection.TryAddSingleton(); + serviceCollection.TryAddSingleton(); + + return serviceCollection; + } + } +} diff --git a/Toolkit.Foundation.Avalonia/Navigation/ContentControlHandler.cs b/Toolkit.Foundation.Avalonia/Navigation/ContentControlHandler.cs index 7c27100..b908f62 100644 --- a/Toolkit.Foundation.Avalonia/Navigation/ContentControlHandler.cs +++ b/Toolkit.Foundation.Avalonia/Navigation/ContentControlHandler.cs @@ -3,17 +3,17 @@ using Avalonia.Controls.Primitives; namespace Toolkit.Foundation.Avalonia { - public class ContentControlHandler : NavigationRouteHandler - { - public override void Receive(NavigationRouteRequest message) - { - if (message.Template is TemplatedControl control) - { - control.DataContext = message.Data; - message.Target.Content = control; - } + //public class ContentControlHandler : NavigationRouteHandler + //{ + // public override void Receive(NavigationRouteRequest message) + // { + // if (message.Template is TemplatedControl control) + // { + // control.DataContext = message.Content; + // message.Target.Content = control; + // } - message.Reply(true); - } - } + // message.Reply(true); + // } + //} } diff --git a/Toolkit.Foundation.Avalonia/Navigation/ContentDialogHandler.cs b/Toolkit.Foundation.Avalonia/Navigation/ContentDialogHandler.cs index caa7b08..5f67780 100644 --- a/Toolkit.Foundation.Avalonia/Navigation/ContentDialogHandler.cs +++ b/Toolkit.Foundation.Avalonia/Navigation/ContentDialogHandler.cs @@ -2,51 +2,51 @@ namespace Toolkit.Foundation.Avalonia { - public class ContentDialogHandler : NavigationRouteHandler - { - public override async void Receive(NavigationRouteRequest message) - { - if (message.Template is ContentDialog contentDialog) - { - async void HandleButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - ContentDialogButtonClickDeferral defferal = args.GetDeferral(); + //public class ContentDialogHandler : NavigationRouteHandler + //{ + // public override async void Receive(NavigationRouteRequest message) + // { + // if (message.Template is ContentDialog contentDialog) + // { + // async void HandleButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) + // { + // ContentDialogButtonClickDeferral defferal = args.GetDeferral(); - if (sender.DataContext is INavigationConfirmationAsync confirmationAsync) - { - if (!await confirmationAsync.CanConfirmAsync()) - { - args.Cancel = true; - } - } + // if (sender.DataContext is INavigationConfirmationAsync confirmationAsync) + // { + // if (!await confirmationAsync.CanConfirmAsync()) + // { + // args.Cancel = true; + // } + // } - if (sender.DataContext is INavigationConfirmation confirmation) - { - if (!confirmation.CanConfirm()) - { - args.Cancel = true; - } - } + // if (sender.DataContext is INavigationConfirmation confirmation) + // { + // if (!confirmation.CanConfirm()) + // { + // args.Cancel = true; + // } + // } - if (!args.Cancel) - { - contentDialog.SecondaryButtonClick -= HandleButtonClick; - contentDialog.PrimaryButtonClick -= HandleButtonClick; - contentDialog.CloseButtonClick -= HandleButtonClick; - } + // if (!args.Cancel) + // { + // contentDialog.SecondaryButtonClick -= HandleButtonClick; + // contentDialog.PrimaryButtonClick -= HandleButtonClick; + // contentDialog.CloseButtonClick -= HandleButtonClick; + // } - defferal.Complete(); - } + // defferal.Complete(); + // } - contentDialog.SecondaryButtonClick += HandleButtonClick; - contentDialog.PrimaryButtonClick += HandleButtonClick; - contentDialog.CloseButtonClick += HandleButtonClick; + // contentDialog.SecondaryButtonClick += HandleButtonClick; + // contentDialog.PrimaryButtonClick += HandleButtonClick; + // contentDialog.CloseButtonClick += HandleButtonClick; - contentDialog.DataContext = message.Data; - await contentDialog.ShowAsync(); + // contentDialog.DataContext = message.Content; + // await contentDialog.ShowAsync(); - message.Reply(true); - } - } - } + // message.Reply(true); + // } + // } + //} } diff --git a/Toolkit.Foundation.Avalonia/Navigation/FrameHandler.cs b/Toolkit.Foundation.Avalonia/Navigation/FrameHandler.cs index b79f2c2..3d80f40 100644 --- a/Toolkit.Foundation.Avalonia/Navigation/FrameHandler.cs +++ b/Toolkit.Foundation.Avalonia/Navigation/FrameHandler.cs @@ -4,31 +4,30 @@ using FluentAvalonia.UI.Navigation; namespace Toolkit.Foundation.Avalonia { - public class FrameHandler : NavigationRouteHandler - { - public override async void Receive(NavigationRouteRequest message) - { - message.Target.NavigationPageFactory = new NavigationPageFactory(); + //public class FrameHandler : NavigationRouteHandler + //{ + // public override async void Receive(NavigationRouteRequest message) + // { + // message.Target.NavigationPageFactory = new NavigationPageFactory(); - TaskCompletionSource completionSource = new(); - if (message.Template is TemplatedControl content) - { - void HandleNavigated(object sender, NavigationEventArgs args) - { - message.Target.Navigated -= HandleNavigated; - if (message.Target.Content is TemplatedControl control) - { - control.DataContext = message.Data; - completionSource.SetResult(true); - } - } + // TaskCompletionSource completionSource = new(); + // if (message.Template is TemplatedControl content) + // { + // void HandleNavigated(object sender, NavigationEventArgs args) + // { + // message.Target.Navigated -= HandleNavigated; + // if (message.Target.Content is TemplatedControl control) + // { + // control.DataContext = message.Content; + // completionSource.SetResult(true); + // } + // } - message.Target.Navigated += HandleNavigated; - message.Target.NavigateFromObject(content); - } + // message.Target.Navigated += HandleNavigated; + // message.Target.NavigateFromObject(content); + // } - bool result = await completionSource.Task; - message.Reply(result); - } - } + // message.Reply(await completionSource.Task); + // } + //} } diff --git a/Toolkit.Foundation.Avalonia/Navigation/INavigationRouteHandler.cs b/Toolkit.Foundation.Avalonia/Navigation/INavigationRouteHandler.cs new file mode 100644 index 0000000..72c3326 --- /dev/null +++ b/Toolkit.Foundation.Avalonia/Navigation/INavigationRouteHandler.cs @@ -0,0 +1,9 @@ +using Avalonia.Controls.Primitives; + +namespace Toolkit.Foundation.Avalonia +{ + //public interface INavigationRouteHandler where TTarget : TemplatedControl + //{ + // void Handle(NavigationRouteRequest message); + //} +} diff --git a/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteHandler.cs b/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteHandler.cs index d7a40f6..9d2136e 100644 --- a/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteHandler.cs +++ b/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteHandler.cs @@ -1,10 +1,9 @@ using Avalonia.Controls.Primitives; -using CommunityToolkit.Mvvm.Messaging; namespace Toolkit.Foundation.Avalonia { - public abstract class NavigationRouteHandler : IRecipient> where TTarget : TemplatedControl - { - public abstract void Receive(NavigationRouteRequest message); - } + //public abstract class NavigationRouteHandler : IRecipient> where TTarget : TemplatedControl + //{ + // public abstract void Receive(NavigationRouteRequest message); + //} } diff --git a/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteRequest.cs b/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteRequest.cs index 9fa8dae..84a2d14 100644 --- a/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteRequest.cs +++ b/Toolkit.Foundation.Avalonia/Navigation/NavigationRouteRequest.cs @@ -1,24 +1,31 @@ using Avalonia.Controls.Primitives; -using CommunityToolkit.Mvvm.Messaging.Messages; namespace Toolkit.Foundation.Avalonia { - public class NavigationRouteRequest : AsyncRequestMessage where TTarget : TemplatedControl - { - public NavigationRouteRequest(TTarget target, object? data, object? template, IDictionary? parameters = null) - { - Target = target; - Data = data; - Template = template; - Parameters = parameters; - } + //public class NavigationRouteRequest : AsyncRequestMessage where TTarget : TemplatedControl + //{ + // public NavigationRouteRequest(TTarget target, object? content, object? template, IDictionary? parameters = null) + // { + // Target = target; + // Content = content; + // Template = template; + // Parameters = parameters; + // } - public TTarget Target { get; } + // public TTarget Target { get; } - public object? Data { get; } + // public object? Content { get; } - public object? Template { get; } + // public object? Template { get; } - public IDictionary? Parameters { get; } - } + // public IDictionary? Parameters { get; } + //} + + //public class NavigationRouteRequest + //{ + // public static NavigationRouteRequest Create(TTarget target, object? content, object? template, IDictionary? parameters = null) where TTarget : TemplatedControl + // { + // return new NavigationRouteRequest(target, content, template, parameters); + // } + //} } diff --git a/Toolkit.Foundation.Avalonia/Navigation/NavigationRouter.cs b/Toolkit.Foundation.Avalonia/Navigation/NavigationRouter.cs index 5940dc9..35f3101 100644 --- a/Toolkit.Foundation.Avalonia/Navigation/NavigationRouter.cs +++ b/Toolkit.Foundation.Avalonia/Navigation/NavigationRouter.cs @@ -1,41 +1,62 @@ using Avalonia.Controls; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; -using CommunityToolkit.Mvvm.Messaging; using FluentAvalonia.UI.Controls; +using Mediator; namespace Toolkit.Foundation.Avalonia { public class NavigationRouter : INavigationRouter { private readonly INavigationRouteDescriptorCollection descriptors; - private readonly IMessenger messenger; + private readonly IMediator mediator; private readonly INamedDataTemplateFactory namedDataTemplateFactory; private readonly INamedTemplateFactory namedTemplateFactory; - private readonly ITemplateDescriptorProvider templateDescriptorProvider; private readonly ITemplateFactory templateFactory; private readonly ITypedDataTemplateFactory typedDataTemplateFactory; - public NavigationRouter(ITemplateDescriptorProvider templateDescriptorProvider, + public NavigationRouter(IMediator mediator, ITemplateFactory templateFactory, INamedTemplateFactory namedTemplateFactory, INamedDataTemplateFactory namedDataTemplateFactory, ITypedDataTemplateFactory typedDataTemplateFactory, - IMessenger messenger, INavigationRouteDescriptorCollection descriptors) { - this.templateDescriptorProvider = templateDescriptorProvider; + this.mediator = mediator; this.templateFactory = templateFactory; this.namedTemplateFactory = namedTemplateFactory; this.namedDataTemplateFactory = namedDataTemplateFactory; this.typedDataTemplateFactory = typedDataTemplateFactory; - this.messenger = messenger; this.descriptors = descriptors; } + public void GoBack(NavigateBack args) + { + if (descriptors.FirstOrDefault(x => args.Route is string { } name && name == x.Name) is NavigationRouteDescriptor descriptor) + { + if (descriptor.Route is ContentControl { Content: TemplatedControl content }) + { + if (content.DataContext is IDisposable disposable) + { + disposable.Dispose(); + } + } + + if (descriptor.Route is Frame frame) + { + frame.GoBack(); + } + } + } + + public Task InitializeAsync() + { + return Task.CompletedTask; + } + public async void Navigate(Navigate args) { - object? data = null; + object? content = null; object? template = null; Dictionary keyedParameters = new(); @@ -58,42 +79,34 @@ namespace Toolkit.Foundation.Avalonia if (args.Name is { Length: > 0 } name) { - data = namedDataTemplateFactory.Create(name, parameters.ToArray()); + content = namedDataTemplateFactory.Create(name, parameters.ToArray()); template = namedTemplateFactory.Create(name); } if (args.Type is Type type) { - data = typedDataTemplateFactory.Create(type, parameters.ToArray()); - template = templateFactory.Create(data); + content = typedDataTemplateFactory.Create(type, parameters.ToArray()); + template = templateFactory.Create(content); } if (template is not null) { - bool navigated = false; - if (template is ContentDialog contentDialog) + object? target = null; + if (descriptors.FirstOrDefault(x => args.Route is string { } name && name == x.Name) is NavigationRouteDescriptor descriptor) { - navigated = await messenger.Send(new NavigationRouteRequest(contentDialog, data, template, keyedParameters)); + target = descriptor.Route; } else { - if (descriptors.FirstOrDefault(x => args.Route is string { } name && name == x.Name) is NavigationRouteDescriptor descriptor) - { - switch (descriptor.Route) - { - case Frame frame: - navigated = await messenger.Send(new NavigationRouteRequest(frame, data, template, keyedParameters)); - break; - case ContentControl contentControl: - navigated = await messenger.Send(new NavigationRouteRequest(contentControl, data, template, keyedParameters)); - break; - } - } + target = template; } - if (navigated) + if (target is TemplatedControl control) { - messenger.Send((Navigated)Navigated.Create((dynamic?)template, (dynamic?)data, keyedParameters)); + //if (await messenger.Send(NavigationRouteRequest.Create(control, content, template, keyedParameters))) + //{ + // messenger.Send(Navigated.Create(template, content, keyedParameters)); + //} } } else @@ -130,24 +143,5 @@ namespace Toolkit.Foundation.Avalonia descriptors.Add(new NavigationRouteDescriptor(name, route)); } - - public void GoBack(NavigateBack args) - { - if (descriptors.FirstOrDefault(x => args.Route is string { } name && name == x.Name) is NavigationRouteDescriptor descriptor) - { - if (descriptor.Route is ContentControl { Content: TemplatedControl content }) - { - if (content.DataContext is IDisposable disposable) - { - disposable.Dispose(); - } - } - - if (descriptor.Route is Frame frame) - { - frame.GoBack(); - } - } - } } } diff --git a/Toolkit.Foundation.Avalonia/Toolkit.Foundation.Avalonia.csproj b/Toolkit.Foundation.Avalonia/Toolkit.Foundation.Avalonia.csproj index 3dde651..dae5e10 100644 --- a/Toolkit.Foundation.Avalonia/Toolkit.Foundation.Avalonia.csproj +++ b/Toolkit.Foundation.Avalonia/Toolkit.Foundation.Avalonia.csproj @@ -9,6 +9,7 @@ + diff --git a/Toolkit.Foundation/Configurations/ConfigurationInitializer.cs b/Toolkit.Foundation/Configurations/ConfigurationInitializer.cs index c90cb9e..a30d36e 100644 --- a/Toolkit.Foundation/Configurations/ConfigurationInitializer.cs +++ b/Toolkit.Foundation/Configurations/ConfigurationInitializer.cs @@ -1,22 +1,22 @@ -using CommunityToolkit.Mvvm.Messaging; +using Mediator; namespace Toolkit.Foundation { public class ConfigurationInitializer : IInitializer where TConfiguration : class, new() { private readonly TConfiguration configuration; - private readonly IMessenger messenger; + private readonly IMediator mediator; public ConfigurationInitializer(TConfiguration configuration, - IMessenger messenger) + IMediator mediator) { this.configuration = configuration; - this.messenger = messenger; + this.mediator = mediator; } public async Task InitializeAsync() { - messenger.Send(configuration); + await mediator.Send(configuration); await Task.CompletedTask; } } diff --git a/Toolkit.Foundation/Configurations/Write.cs b/Toolkit.Foundation/Configurations/Write.cs index df659bc..f4cab41 100644 --- a/Toolkit.Foundation/Configurations/Write.cs +++ b/Toolkit.Foundation/Configurations/Write.cs @@ -1,4 +1,6 @@ -namespace Toolkit.Foundation +using Mediator; + +namespace Toolkit.Foundation { - public record Write(string Section, Action UpdateDelegate) where TConfiguration : class; + public abstract record Write(string Section, Action UpdateDelegate) : IRequest where TConfiguration : class; } diff --git a/Toolkit.Foundation/Configurations/WriteHandler.cs b/Toolkit.Foundation/Configurations/WriteHandler.cs index 9ce22ab..fd1a64e 100644 --- a/Toolkit.Foundation/Configurations/WriteHandler.cs +++ b/Toolkit.Foundation/Configurations/WriteHandler.cs @@ -1,28 +1,30 @@ -using CommunityToolkit.Mvvm.Messaging; +using Mediator; namespace Toolkit.Foundation { - public class WriteHandler : IRecipient> where TConfiguration : class + public class WriteHandler : IRequestHandler> where TConfiguration : class { - private readonly IMessenger messenger; + private readonly IMediator mediator; private readonly TConfiguration configuration; private readonly IConfigurationWriter writer; public WriteHandler(TConfiguration configuration, IConfigurationWriter writer, - IMessenger messenger) + IMediator mediator) { - this.messenger = messenger; + this.mediator = mediator; this.configuration = configuration; this.writer = writer; } - public void Receive(Write request) + public async ValueTask Handle(Write request, CancellationToken cancellationToken) { request.UpdateDelegate.Invoke(configuration); writer.Write(request.Section, configuration); - messenger.Send(new ConfigurationChanged(configuration)); + await mediator.Send(new ConfigurationChanged(configuration), cancellationToken); + + return default; } } } diff --git a/Toolkit.Foundation/Extensions/IHostBuilderExtensions.cs b/Toolkit.Foundation/Extensions/IHostBuilderExtensions.cs index 5f65431..f749f54 100644 --- a/Toolkit.Foundation/Extensions/IHostBuilderExtensions.cs +++ b/Toolkit.Foundation/Extensions/IHostBuilderExtensions.cs @@ -1,5 +1,4 @@ -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Hosting; namespace Toolkit.Foundation { diff --git a/Toolkit.Foundation/Extensions/IServiceCollectionExtensions.cs b/Toolkit.Foundation/Extensions/IServiceCollectionExtensions.cs new file mode 100644 index 0000000..25fdf97 --- /dev/null +++ b/Toolkit.Foundation/Extensions/IServiceCollectionExtensions.cs @@ -0,0 +1,25 @@ +using Microsoft.Extensions.DependencyInjection; + +namespace Toolkit.Foundation +{ + public static class IServiceCollectionExtensions + { + public static IServiceCollection AddFoundation(this IServiceCollection serviceCollection) + { + serviceCollection.AddSingleton(provider => new ServiceFactory(provider.GetService, (instanceType, parameters) => ActivatorUtilities.CreateInstance(provider, instanceType, parameters!))); + + serviceCollection + .AddSingleton(provider => new Initialization(() => + { + return serviceCollection.Where(x => x.ServiceType.GetInterfaces() + .Contains(typeof(IInitializer)) || x.ServiceType == typeof(IInitializer)) + .GroupBy(x => x.ServiceType) + .Select(x => x.First()) + .SelectMany(x => provider.GetServices(x.ServiceType) + .Select(x => (IInitializer?)x)).ToList(); + })); + + return serviceCollection; + } + } +} diff --git a/Toolkit.Foundation/Lifecycles/AppService.cs b/Toolkit.Foundation/Lifecycles/AppService.cs index 35fd142..1a6833d 100644 --- a/Toolkit.Foundation/Lifecycles/AppService.cs +++ b/Toolkit.Foundation/Lifecycles/AppService.cs @@ -1,23 +1,23 @@ -using CommunityToolkit.Mvvm.Messaging; +using Mediator; using Microsoft.Extensions.Hosting; namespace Toolkit.Foundation { public class AppService : IHostedService { - private readonly IMessenger messenger; + private readonly IMediator mediator; private readonly IInitialization initialization; - public AppService(IMessenger messenger, + public AppService(IMediator mediator, IInitialization initialization) { - this.messenger = messenger; + this.mediator = mediator; this.initialization = initialization; } public async Task StartAsync(CancellationToken cancellationToken) { - messenger.Send(new Initialize()); + await mediator.Send(new Initialize()); await initialization.InitializeAsync(); } diff --git a/Toolkit.Foundation/Lifecycles/Initialize.cs b/Toolkit.Foundation/Lifecycles/Initialize.cs index d1e73c9..fd95724 100644 --- a/Toolkit.Foundation/Lifecycles/Initialize.cs +++ b/Toolkit.Foundation/Lifecycles/Initialize.cs @@ -1,4 +1,6 @@ -namespace Toolkit.Foundation +using Mediator; + +namespace Toolkit.Foundation { - public record class Initialize; + public record class Initialize : IRequest; } diff --git a/Toolkit.Foundation/Navigation/INavigationRouter.cs b/Toolkit.Foundation/Navigation/INavigationRouter.cs index 9abf486..6d16547 100644 --- a/Toolkit.Foundation/Navigation/INavigationRouter.cs +++ b/Toolkit.Foundation/Navigation/INavigationRouter.cs @@ -1,6 +1,6 @@ namespace Toolkit.Foundation { - public interface INavigationRouter + public interface INavigationRouter : IInitializer { void Navigate(Navigate args); diff --git a/Toolkit.Foundation/Navigation/NavigateHandler.cs b/Toolkit.Foundation/Navigation/NavigateHandler.cs index 71899a0..6417263 100644 --- a/Toolkit.Foundation/Navigation/NavigateHandler.cs +++ b/Toolkit.Foundation/Navigation/NavigateHandler.cs @@ -1,19 +1,18 @@ -using CommunityToolkit.Mvvm.Messaging; - + namespace Toolkit.Foundation { - public class NavigateHandler : IRecipient - { - private readonly IMessenger messenger; + //public class NavigateHandler : IRecipient + //{ + // private readonly IMessenger messenger; - public NavigateHandler(IMessenger messenger) - { - this.messenger = messenger; - } + // public NavigateHandler(IMessenger messenger) + // { + // this.messenger = messenger; + // } - public void Receive(Navigate request) - { - messenger.Send(request); - } - } + // public void Receive(Navigate request) + // { + // messenger.Send(request); + // } + //} } \ No newline at end of file diff --git a/Toolkit.Foundation/Navigation/Navigated.cs b/Toolkit.Foundation/Navigation/Navigated.cs index c2485f0..118d51d 100644 --- a/Toolkit.Foundation/Navigation/Navigated.cs +++ b/Toolkit.Foundation/Navigation/Navigated.cs @@ -1,30 +1,30 @@ namespace Toolkit.Foundation { - public class Navigated where TContent : class where TDataContext : class + public class Navigated where TTemplate : class where TContent : class { public Navigated() { } - public Navigated(TContent content, TDataContext dataContext, IDictionary? parameters = null) + public Navigated(TTemplate template, TContent content, IDictionary? parameters = null) { + Template = template; Content = content; - DataContext = dataContext; Parameters = parameters; } - public TContent? Content { get; } + public TTemplate? Template { get; } - public TDataContext? DataContext { get; } + public TContent? Content { get; } public IDictionary? Parameters { get; } } public class Navigated { - public static Navigated Create(TTemplate content, TDataTemplate dataContext, IDictionary? parameters = null) where TTemplate : class where TDataTemplate : class + public static Navigated Create(TTemplate template, TContent? content, IDictionary? parameters = null) where TTemplate : class where TContent : class { - return new Navigated(content, dataContext, parameters); + return new Navigated(template, content, parameters); } } } \ No newline at end of file diff --git a/Toolkit.Foundation/Toolkit.Foundation.csproj b/Toolkit.Foundation/Toolkit.Foundation.csproj index 786c8bb..72e5a1a 100644 --- a/Toolkit.Foundation/Toolkit.Foundation.csproj +++ b/Toolkit.Foundation/Toolkit.Foundation.csproj @@ -8,12 +8,12 @@ - +