Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ public MainViewModel(IEnumerable<IModule> modules,
new NavigationParameters { { "requestNew", requestNew } });
_navigationService.RequestViewNavigation("TabRegion",
viewName,
new NavigationParameters { { "requestNew", requestNew } },
$"alias-{viewName}");
new NavigationParameters { { "requestNew", requestNew } });
_navigationService.RequestViewNavigation("ItemsRegion",
viewName,
new NavigationParameters { { "requestNew", requestNew } });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace Lemon.ModuleNavigation.SampleViewModel;
public class BaseNavigationViewModel : ReactiveObject, INavigationAware, ICanUnload
{
public virtual string Greeting => $"Welcome to {GetType().Name}[{Environment.ProcessId}][{Environment.CurrentManagedThreadId}]{Environment.NewLine}{DateTime.Now:yyyy-MM-dd HH-mm-ss.ffff}";

public virtual string? Alias => GetType().Name;
public BaseNavigationViewModel()
{
UnloadViewCommand = ReactiveCommand.Create(() =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public MainWindowViewModel(INavigationService navigationService,

}
_navigationService.RequestViewNavigation("ContentRegion", viewName, new NavigationParameters { { "requestNew", requestNew } });
_navigationService.RequestViewNavigation("TabRegion", viewName, new NavigationParameters { { "requestNew", requestNew } }, $"alias-{viewName}");
_navigationService.RequestViewNavigation("TabRegion", viewName, new NavigationParameters { { "requestNew", requestNew } });
_navigationService.RequestViewNavigation("ItemsRegion", viewName, new NavigationParameters { { "requestNew", requestNew } });
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public ViewAlphaViewModel()
{
}

public override string? Alias => "AlphaView";
public string Title => nameof(ViewAlphaViewModel);

public event Action<IDialogResult>? RequestClose;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace Lemon.ModuleNavigation.SampleViewModel;
public class ViewBetaViewModel : BaseNavigationViewModel, IDialogAware
{
public string Title => nameof(ViewBetaViewModel);

public override string? Alias => "BetaView";
public event Action<IDialogResult>? RequestClose;
public ReactiveCommand<Unit, Unit> CloseCommand => ReactiveCommand.Create(() =>
{
Expand Down
1 change: 1 addition & 0 deletions src/Lemon.ModuleNavigation.Avaloniaui/Regions/Region.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ private IDataTemplate CreateRegionDataTemplate()

view.DataContext = navigationAware;
navigationAware.OnNavigatedTo(context);
context.Alias = navigationAware.Alias;
if (navigationAware is ICanUnload canUnloadNavigationAware)
{
canUnloadNavigationAware.RequestUnload += () =>
Expand Down
1 change: 1 addition & 0 deletions src/Lemon.ModuleNavigation.Wpf/Regions/Region.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ public virtual void ScrollIntoView(NavigationContext item)

view.DataContext = navigationAware;
navigationAware.OnNavigatedTo(context);
context.Alias = navigationAware.Alias;
if (navigationAware is ICanUnload canUnloadNavigationAware)
{
canUnloadNavigationAware.RequestUnload += () =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

public interface INavigationAware
{
string? Alias { get; }
void OnNavigatedTo(NavigationContext navigationContext);
bool IsNavigationTarget(NavigationContext navigationContext);
void OnNavigatedFrom(NavigationContext navigationContext);
Expand Down
2 changes: 1 addition & 1 deletion src/Lemon.ModuleNavigation/Abstractions/IRegionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ public interface IRegionManager : IObservable<NavigationContext>, IObservable<IR
{
void AddRegion(string regionName, IRegion region);
IRegion? GetRegion(string regionName);
void RequestViewNavigate(string regionName, string viewName, NavigationParameters? parameters = null, string? alias = null);
void RequestViewNavigate(string regionName, string viewName, NavigationParameters? parameters = null);
[Obsolete("requestNew was obsolete.Consider IsNavigationTarget() in INavigationAware instead.")]
void RequestNavigate(string regionName, string viewName, bool requestNew, NavigationParameters? parameters = null);
void RequestViewUnload(string regionName, string viewName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,10 @@ namespace Lemon.ModuleNavigation.Abstractions;
public interface IViewNavigationHandler
{
void OnNavigateTo(string regionName,
string viewName,
string? alias = null);
string viewName);
void OnNavigateTo(string regionName,
string viewName,
NavigationParameters parameters,
string? alias = null);
NavigationParameters parameters);
void OnViewUnload(string regionName,
string viewName);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ void RequestViewNavigation(string regionName,
bool requestNew);

void RequestViewNavigation(string regionName,
string viewName,
string? alias = null);
string viewName);

/// <summary>
/// RequestViewNavigation
Expand All @@ -41,8 +40,7 @@ void RequestViewNavigation(string regionName,

void RequestViewNavigation(string regionName,
string viewName,
NavigationParameters parameters,
string? alias = null);
NavigationParameters parameters);

/// <summary>
/// RequestViewUnload
Expand Down
45 changes: 28 additions & 17 deletions src/Lemon.ModuleNavigation/NavigationContext.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
using Lemon.ModuleNavigation.Abstractions;
using Lemon.ModuleNavigation.Core;
using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace Lemon.ModuleNavigation;

public class NavigationContext
public class NavigationContext : INotifyPropertyChanged
{
[Obsolete("requestNew was obsolete.Consider IsNavigationTarget() in INavigationAware instead.")]
internal NavigationContext(string viewName,
internal NavigationContext(string viewName,
string regionName,
IServiceProvider serviceProvider,
bool requestNew,
Expand All @@ -21,42 +23,45 @@ internal NavigationContext(string viewName,
internal NavigationContext(string viewName,
string regionName,
IServiceProvider serviceProvider,
NavigationParameters? navigationParameters,
string? alias)
NavigationParameters? navigationParameters)
{
ViewName = viewName;
Parameters = navigationParameters;
RegionName = regionName;
ServiceProvider = serviceProvider;
Alias = alias;
}
public static ViewNameComparer ViewNameComparer => new();
public static StrictComparer StrictComparer => new();
public string ViewName
{
get;
private set;
public string ViewName
{
get;
private set;
}
private string? _alias;
public string? Alias
{
get => _alias;
set
{
_alias = value;
OnPropertyChanged();
}
}
public NavigationParameters? Parameters
{
get;
private set;
}
public NavigationParameters? Parameters
{
get;
private set;
}
[Obsolete("requestNew was obsolete.Consider IsNavigationTarget() in INavigationAware instead.")]
public bool RequestNew
{
get;
private set;
}
public string RegionName
{
get;
private set;
{
get;
private set;
}
public int Key => GetHashCode();
public IServiceProvider ServiceProvider
Expand All @@ -72,6 +77,12 @@ public override string ToString()
{
return $"{RegionName}.{ViewName}";
}

public event PropertyChangedEventHandler? PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ViewNameComparer : IEqualityComparer<NavigationContext>
{
Expand Down
10 changes: 4 additions & 6 deletions src/Lemon.ModuleNavigation/NavigationHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,15 @@ public void OnNavigateTo(string moduleKey, NavigationParameters? parameters)
_moduleManager.RequestNavigate(moduleKey, parameters);
}
public void OnNavigateTo(string regionName,
string viewName,
string? alias = null)
string viewName)
{
RegionManager.RequestViewNavigate(regionName, viewName, null, alias);
RegionManager.RequestViewNavigate(regionName, viewName, null);
}
public void OnNavigateTo(string regionName,
string viewName,
NavigationParameters navigationParameters,
string? alias = null)
NavigationParameters navigationParameters)
{
RegionManager.RequestViewNavigate(regionName, viewName, navigationParameters, alias);
RegionManager.RequestViewNavigate(regionName, viewName, navigationParameters);
}

public void OnViewUnload(string regionName, string viewName)
Expand Down
10 changes: 4 additions & 6 deletions src/Lemon.ModuleNavigation/NavigationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,21 @@ public void RequestModuleNavigate(string moduleName, NavigationParameters? param
_bufferModuleName.Push((moduleName, parameters));
}
public void RequestViewNavigation(string regionName,
string viewName,
string? alias = null)
string viewName)
{
foreach (var handler in _viewHandlers)
{
handler.OnNavigateTo(regionName, viewName, alias);
handler.OnNavigateTo(regionName, viewName);
}
_bufferViewName.Push((regionName, viewName, null));
}
public void RequestViewNavigation(string regionName,
string viewName,
NavigationParameters parameters,
string? alias = null)
NavigationParameters parameters)
{
foreach (var handler in _viewHandlers)
{
handler.OnNavigateTo(regionName, viewName, parameters, alias);
handler.OnNavigateTo(regionName, viewName, parameters);
}
_bufferViewName.Push((regionName, viewName, parameters));
}
Expand Down
4 changes: 2 additions & 2 deletions src/Lemon.ModuleNavigation/RegionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ public void RequestNavigate(string regionName, string viewName, bool requestNew,
});
}
}
public void RequestViewNavigate(string regionName, string viewName, NavigationParameters? parameters = null, string? alias = null)
public void RequestViewNavigate(string regionName, string viewName, NavigationParameters? parameters = null)
{
var context = new NavigationContext(viewName, regionName, _serviceProvider, parameters, alias);
var context = new NavigationContext(viewName, regionName, _serviceProvider, parameters);
if (_regions.TryGetValue(regionName, out var region))
{
region.Activate(context);
Expand Down