Skip to content

Commit b519c0d

Browse files
committed
wpf support and some optimizations
1 parent 2be6008 commit b519c0d

43 files changed

Lines changed: 1545 additions & 248 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Avalonia.Metadata;
22

3-
[assembly: XmlnsPrefix("https://github.com/NeverMorewd/Lemon.ModuleNavigation", "l")]
3+
[assembly: XmlnsPrefix("https://github.com/NeverMorewd/Lemon.ModuleNavigation", "lm")]
44
[assembly: XmlnsDefinition("https://github.com/NeverMorewd/Lemon.ModuleNavigation", "Lemon.ModuleNavigation")]
55
[assembly: XmlnsDefinition("https://github.com/NeverMorewd/Lemon.ModuleNavigation", "Lemon.ModuleNavigation.Avaloniaui")]
66
[assembly: XmlnsDefinition("https://github.com/NeverMorewd/Lemon.ModuleNavigation", "Lemon.ModuleNavigation.Avaloniaui.Core")]

src/Lemon.ModuleNavigation.Avaloniaui/Core/AvaModule{TView,TViewModel}.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Lemon.ModuleNavigation.Avaloniaui.Core;
66

7+
[Obsolete($"Use Module instead, they are equivalent.")]
78
public abstract class AvaModule<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TView,
89
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TViewModel>
910
: Module<TView, TViewModel>

src/Lemon.ModuleNavigation.Avaloniaui/Core/NavigationExtension.cs

Lines changed: 186 additions & 187 deletions
Large diffs are not rendered by default.

src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/DefaultDialogWindow.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,4 @@
99
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
1010
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
1111
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
12-
Welcome to Avalonia!
1312
</Window>

src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/DefaultDialogWindow.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Lemon.ModuleNavigation.Avaloniaui.Dialogs;
44

5-
public partial class DefaultDialogWindow : Window, IAvaDialogWindow
5+
public partial class DefaultDialogWindow : Window, IDialogWindow
66
{
77
public readonly static string Key = nameof(DefaultDialogWindow);
88
public DefaultDialogWindow()

src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/AvaDialogService.cs renamed to src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/DialogService.cs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,14 @@
77

88
namespace Lemon.ModuleNavigation.Avaloniaui.Dialogs;
99

10-
public class AvaDialogService : IDialogService
10+
public class DialogService : IDialogService
1111
{
1212
private readonly IServiceProvider _serviceProvider;
13-
public AvaDialogService(IServiceProvider serviceProvider)
13+
public DialogService(IServiceProvider serviceProvider)
1414
{
1515
_serviceProvider = serviceProvider;
1616
}
1717

18-
public void Show(string name,
19-
IDialogParameters? parameters = null,
20-
Action<IDialogResult>? callback = null)
21-
{
22-
ShowCore(name, null, false, parameters, callback).Wait();
23-
}
24-
2518
public void Show(string name,
2619
string? windowName = null,
2720
IDialogParameters? parameters = null,
@@ -71,14 +64,14 @@ private async Task ShowCore(string name,
7164
IDialogParameters? parameters = null,
7265
Action<IDialogResult>? callback = null)
7366
{
74-
IAvaDialogWindow dialogWindow;
67+
IDialogWindow dialogWindow;
7568
if (string.IsNullOrEmpty(windowName))
7669
{
77-
dialogWindow = _serviceProvider.GetRequiredKeyedService<IAvaDialogWindow>(DefaultDialogWindow.Key);
70+
dialogWindow = _serviceProvider.GetRequiredKeyedService<IDialogWindow>(DefaultDialogWindow.Key);
7871
}
7972
else
8073
{
81-
dialogWindow = _serviceProvider.GetRequiredKeyedService<IAvaDialogWindow>(windowName);
74+
dialogWindow = _serviceProvider.GetRequiredKeyedService<IDialogWindow>(windowName);
8275
}
8376

8477
var dialogViewModel = _serviceProvider.GetRequiredKeyedService<IDialogAware>(name);
Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
using Avalonia.Controls;
2-
using Avalonia.Interactivity;
32
using Lemon.ModuleNavigation.Abstracts;
43

5-
namespace Lemon.ModuleNavigation.Avaloniaui.Dialogs
4+
namespace Lemon.ModuleNavigation.Avaloniaui.Dialogs;
5+
6+
public interface IDialogWindow : IDialogWindowBase
7+
{
8+
Task<TResult> ShowDialog<TResult>(Window owner);
9+
Task ShowDialog(Window owner);
10+
}
11+
12+
[Obsolete("Use IDialogWindow instead, they are equivalent.")]
13+
public interface IAvaDialogWindow : IDialogWindowBase
614
{
7-
public interface IAvaDialogWindow : IDialogWindow
8-
{
9-
//event EventHandler<WindowClosingEventArgs>? Closing;
10-
//event EventHandler<RoutedEventArgs>? Loaded;
11-
Task<TResult> ShowDialog<TResult>(Window owner);
12-
Task ShowDialog(Window owner);
13-
}
15+
Task<TResult> ShowDialog<TResult>(Window owner);
16+
Task ShowDialog(Window owner);
1417
}

src/Lemon.ModuleNavigation.Avaloniaui/Extensions/ServiceCollectionExtensions.cs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,14 @@ public static IServiceCollection AddAvaNavigationSupport(this IServiceCollection
1111
return serviceDescriptors
1212
.AddNavigationSupport()
1313
.AddSingleton(sp => sp.GetKeyedServices<IView>(typeof(IView)))
14-
.AddSingleton<IDialogService, AvaDialogService>()
15-
.AddKeyedTransient<IAvaDialogWindow, DefaultDialogWindow>(DefaultDialogWindow.Key);
14+
.AddSingleton<IDialogService, DialogService>()
15+
.AddKeyedTransient<IDialogWindow, DefaultDialogWindow>(DefaultDialogWindow.Key);
1616
}
1717

1818
public static IServiceCollection AddAvaDialogWindow<TDialogWindow>(this IServiceCollection serviceDescriptors, string windowKey)
19-
where TDialogWindow : class, IAvaDialogWindow
19+
where TDialogWindow : class, IDialogWindow
2020
{
21-
return serviceDescriptors.AddKeyedTransient<IAvaDialogWindow, TDialogWindow>(windowKey);
21+
return serviceDescriptors.AddKeyedTransient<IDialogWindow, TDialogWindow>(windowKey);
2222
}
23-
//public static IServiceCollection AddAvaDialog<TView, TViewModel>(this IServiceCollection serviceDescriptors, string viewKey)
24-
// where TViewModel : class, IDialogAware
25-
// where TView : class, IView
26-
//{
27-
// return serviceDescriptors
28-
// .AddKeyedTransient<IDialogAware, TViewModel>(viewKey)
29-
// .AddKeyedTransient<IView, TView>(viewKey);
30-
//}
3123
}
3224
}

src/Lemon.ModuleNavigation.Avaloniaui/Regions/AvaloniauiRegion.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,16 @@ private IDataTemplate CreateRegionDataTemplate()
3939

4040
if (needNewView)
4141
{
42-
// Create new view and navigation aware instance
4342
view = context.ServiceProvider.GetRequiredKeyedService<IView>(context.TargetViewName);
4443
var navigationAware = context.ServiceProvider.GetRequiredKeyedService<INavigationAware>(context.TargetViewName);
4544

46-
// Handle previous navigation
4745
if (_current.TryTakeData(out var previousData))
4846
{
4947
previousData.NavigationAware.OnNavigatedFrom(context);
5048
}
51-
52-
// Validate navigation target
5349
if (!navigationAware.IsNavigationTarget(context))
5450
return null;
5551

56-
// Setup new view
5752
view.DataContext = navigationAware;
5853
navigationAware.OnNavigatedTo(context);
5954
_current.SetData((view, navigationAware));

src/Lemon.ModuleNavigation.Sample/DialogWindows/CustomDialogWindow.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace Lemon.ModuleNavigation.Sample;
55

6-
public partial class CustomDialogWindow : Window, IAvaDialogWindow
6+
public partial class CustomDialogWindow : Window, IDialogWindow
77
{
88
public CustomDialogWindow()
99
{

0 commit comments

Comments
 (0)