Kaynağa Gözat

avalonia: Fixed OnBackButtonPressed

Kenric Nugteren 2 ay önce
ebeveyn
işleme
36d77a11c7

+ 5 - 0
PRS.Avalonia/PRS.Avalonia/MainViewModel.cs

@@ -56,6 +56,11 @@ public partial class MainViewModel : ViewModelBase
         Navigation.Reset<LoginViewModel>();
     }
 
+    public override bool OnBackButtonPressed()
+    {
+        return base.OnBackButtonPressed() && (Content is null || Content.OnBackButtonPressed());
+    }
+
     private void MainViewModel_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
     {
         if(e.PropertyName == nameof(ModelProgressVisible) && !IsTransitioning)

+ 1 - 1
PRS.Avalonia/PRS.Avalonia/Settings/SettingsViewModel.cs

@@ -97,7 +97,7 @@ public partial class SettingsViewModel : ViewModelBase
         return Task.FromResult(true);
     }
 
-    protected override bool OnBackButtonPressed()
+    public override bool OnBackButtonPressed()
     {
         LoadDatabaseSettings();
         return base.OnBackButtonPressed();

+ 6 - 1
PRS.Avalonia/PRS.Avalonia/ViewModelBase.cs

@@ -132,7 +132,7 @@ public abstract partial class ViewModelBase : ObservableObject, IViewModelBase
             Navigation.Back();
     }
 
-    protected virtual bool OnBackButtonPressed()
+    public virtual bool OnBackButtonPressed()
     {
         return true;
     }
@@ -176,6 +176,11 @@ public abstract partial class ViewModelBase : ObservableObject, IViewModelBase
         return await OnRefresh();
     }
 
+    /// <summary>
+    /// Refresh the data on the screen. If this method returns a value other than <see cref="TimeSpan.Zero"/>, then that value is used to
+    /// schedule the next refresh.
+    /// </summary>
+    /// <returns>Time until next refresh is triggered, or <see cref="TimeSpan.Zero"/> if periodic refreshing is unwanted.</returns>
     protected virtual Task<TimeSpan> OnRefresh()
     {
         return Task.FromResult(TimeSpan.FromSeconds(30));