From c21cfd2be021253ca96fa2e7579aef298777ceff Mon Sep 17 00:00:00 2001 From: Omid Mafakher Date: Sat, 21 Dec 2024 19:56:30 +0100 Subject: [PATCH] fixes #64, avoid override pop behaviour --- src/AvaloniaInside.Shell/BindingNavigate.cs | 58 +++++++++---------- .../DefaultNavigationUpdateStrategy.cs | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/AvaloniaInside.Shell/BindingNavigate.cs b/src/AvaloniaInside.Shell/BindingNavigate.cs index ea14e32..d27afe8 100644 --- a/src/AvaloniaInside.Shell/BindingNavigate.cs +++ b/src/AvaloniaInside.Shell/BindingNavigate.cs @@ -31,40 +31,40 @@ public event EventHandler? CanExecuteChanged public async Task ExecuteAsync(object? parameter, CancellationToken cancellationToken) { - if (Sender is not Visual visual) return; - if (visual.FindAncestorOfType() is not { } shell) return; + if (Sender is not Visual visual) return; + if (visual.FindAncestorOfType() is not { } shell) return; - _singletonCanExecute = false; + _singletonCanExecute = false; + _singletonCanExecuteChanged?.Invoke(this, EventArgs.Empty); + try + { + if (parameter != null) + await shell.Navigator.NavigateAsync( + Path, + Type, + parameter, + Sender, + true, + Transition, + cancellationToken); + else + await shell.Navigator.NavigateAsync( + Path, + Type, + Sender, + true, + Transition, + cancellationToken); + } + finally + { + _singletonCanExecute = true; _singletonCanExecuteChanged?.Invoke(this, EventArgs.Empty); - try - { - if (parameter != null) - await shell.Navigator.NavigateAsync( - Path, - Type, - parameter, - Sender, - true, - Transition, - cancellationToken); - else - await shell.Navigator.NavigateAsync( - Path, - Type, - Sender, - true, - Transition, - cancellationToken); - } - finally - { - _singletonCanExecute = true; - _singletonCanExecuteChanged?.Invoke(this, EventArgs.Empty); - } } + } public static implicit operator BindingNavigate(string path) => new BindingNavigate { Path = path }; -} \ No newline at end of file +} diff --git a/src/AvaloniaInside.Shell/DefaultNavigationUpdateStrategy.cs b/src/AvaloniaInside.Shell/DefaultNavigationUpdateStrategy.cs index e86bdbb..3019542 100644 --- a/src/AvaloniaInside.Shell/DefaultNavigationUpdateStrategy.cs +++ b/src/AvaloniaInside.Shell/DefaultNavigationUpdateStrategy.cs @@ -51,7 +51,7 @@ public async Task UpdateChangesAsync( await newInstanceLifecycle.ArgumentAsync(argument, cancellationToken); } - if (!isSame && changes.Front != null) + if (!isSame && changes.Front != null && navigateType != NavigateType.Pop) await _presenterProvider.For(navigateType).PresentAsync(shellView, changes.Front, navigateType, cancellationToken); }