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,7 +47,8 @@ public MainViewModel(IEnumerable<IModule> modules,
new NavigationParameters { { "requestNew", requestNew } });
_navigationService.RequestViewNavigation("TabRegion",
viewName,
new NavigationParameters { { "requestNew", requestNew } });
new NavigationParameters { { "requestNew", requestNew } },
$"alias-{viewName}");
_navigationService.RequestViewNavigation("ItemsRegion",
viewName,
new NavigationParameters { { "requestNew", requestNew } });
Expand Down
2 changes: 1 addition & 1 deletion samples/Lemon.ModuleNavigation.Sample/Views/MainView.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Spacing="2">
<TextBlock Text="{Binding}" />
<TextBlock Text="{Binding Alias}" />
<Button
Content="X"
FontSize="11"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using ReactiveUI;
using System.Diagnostics;
using System.Reactive;
using System.Reflection;

namespace Lemon.ModuleNavigation.SampleViewModel;

Expand Down Expand Up @@ -32,7 +33,7 @@ public MainWindowViewModel(INavigationService navigationService,

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

Expand Down
2 changes: 1 addition & 1 deletion samples/Lemon.ModuleNavigation.WpfSample/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" />
<TextBlock Text="{Binding Alias}" />
<Button
Width="20"
Height="20"
Expand Down
5 changes: 1 addition & 4 deletions src/Lemon.ModuleNavigation/Abstractions/IRegionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@ 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);
void RequestViewNavigate(string regionName, string viewName, NavigationParameters? parameters = null, string? alias = 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);
void RequestViewUnload(NavigationContext context);


void RequestModuleNavigate(string regionName, string moduleName, NavigationParameters? parameters);
void RequestModuleNavigate(string regionName, IModule module, NavigationParameters? parameters);
void RequestModuleUnload(string moduleName, string viewName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ namespace Lemon.ModuleNavigation.Abstractions;
public interface IViewNavigationHandler
{
void OnNavigateTo(string regionName,
string viewName);
string viewName,
string? alias = null);
void OnNavigateTo(string regionName,
string viewName,
NavigationParameters parameters);
NavigationParameters parameters,
string? alias = null);
void OnViewUnload(string regionName,
string viewName);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ void RequestViewNavigation(string regionName,
bool requestNew);

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

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

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

/// <summary>
/// RequestViewUnload
Expand Down
9 changes: 8 additions & 1 deletion src/Lemon.ModuleNavigation/NavigationContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ internal NavigationContext(string viewName,
internal NavigationContext(string viewName,
string regionName,
IServiceProvider serviceProvider,
NavigationParameters? navigationParameters)
NavigationParameters? navigationParameters,
string? alias)
{
ViewName = viewName;
Parameters = navigationParameters;
RegionName = regionName;
ServiceProvider = serviceProvider;
Alias = alias;
}
public static ViewNameComparer ViewNameComparer => new();
public static StrictComparer StrictComparer => new();
Expand All @@ -35,6 +37,11 @@ public string ViewName
get;
private set;
}
public string? Alias
{
get;
private set;
}
public NavigationParameters? Parameters
{
get;
Expand Down
10 changes: 6 additions & 4 deletions src/Lemon.ModuleNavigation/NavigationHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,17 @@ public void OnNavigateTo(string moduleKey, NavigationParameters? parameters)
_moduleManager.RequestNavigate(moduleKey, parameters);
}
public void OnNavigateTo(string regionName,
string viewName)
string viewName,
string? alias = null)
{
RegionManager.RequestViewNavigate(regionName, viewName, null);
RegionManager.RequestViewNavigate(regionName, viewName, null, alias);
}
public void OnNavigateTo(string regionName,
string viewName,
NavigationParameters navigationParameters)
NavigationParameters navigationParameters,
string? alias = null)
{
RegionManager.RequestViewNavigate(regionName, viewName, navigationParameters);
RegionManager.RequestViewNavigate(regionName, viewName, navigationParameters, alias);
}

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