diff --git a/src/App/Pages/Desktop/LiveFeedPage.xaml.cs b/src/App/Pages/Desktop/LiveFeedPage.xaml.cs
index a51eff9c0..49abfa534 100644
--- a/src/App/Pages/Desktop/LiveFeedPage.xaml.cs
+++ b/src/App/Pages/Desktop/LiveFeedPage.xaml.cs
@@ -1,6 +1,7 @@
// Copyright (c) Richasy. All rights reserved.
using Bili.App.Pages.Base;
+using Windows.UI.Xaml.Navigation;
namespace Bili.App.Pages.Desktop
{
@@ -21,5 +22,9 @@ protected override void OnPageLoaded()
///
protected override void OnPageUnloaded()
=> Bindings.StopTracking();
+
+ ///
+ protected override void OnNavigatedFrom(NavigationEventArgs e)
+ => ViewModel.ResetStateCommand.Execute(null);
}
}
diff --git a/src/App/Pages/Desktop/Overlay/HistoryPage.xaml.cs b/src/App/Pages/Desktop/Overlay/HistoryPage.xaml.cs
index 37e35afb7..4443bd12a 100644
--- a/src/App/Pages/Desktop/Overlay/HistoryPage.xaml.cs
+++ b/src/App/Pages/Desktop/Overlay/HistoryPage.xaml.cs
@@ -8,6 +8,7 @@
using Bili.ViewModels.Interfaces.Account;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
namespace Bili.App.Pages.Desktop.Overlay
{
@@ -29,6 +30,10 @@ protected override void OnPageLoaded()
protected override void OnPageUnloaded()
=> Bindings.StopTracking();
+ ///
+ protected override void OnNavigatedFrom(NavigationEventArgs e)
+ => ViewModel.ResetStateCommand.Execute(null);
+
private async void OnClearButtonClickAsync(object sender, RoutedEventArgs e)
{
var isClear = false;
diff --git a/src/ViewModels/ViewModels.Interfaces/IInformationFlowViewModel.cs b/src/ViewModels/ViewModels.Interfaces/IInformationFlowViewModel.cs
index 45af555ba..fccaf17b4 100644
--- a/src/ViewModels/ViewModels.Interfaces/IInformationFlowViewModel.cs
+++ b/src/ViewModels/ViewModels.Interfaces/IInformationFlowViewModel.cs
@@ -2,6 +2,7 @@
using System.Collections.ObjectModel;
using System.ComponentModel;
+using CommunityToolkit.Mvvm.Input;
namespace Bili.ViewModels.Interfaces
{
@@ -15,5 +16,10 @@ public interface IInformationFlowViewModel : INotifyPropertyChanged, IInitial
/// 视频集合.
///
ObservableCollection Items { get; }
+
+ ///
+ /// 重置状态的命令.
+ ///
+ IRelayCommand ResetStateCommand { get; }
}
}
diff --git a/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.Properties.cs b/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.Properties.cs
index 42c7bdd09..e53dee3bc 100644
--- a/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.Properties.cs
+++ b/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.Properties.cs
@@ -37,6 +37,9 @@ public partial class InformationFlowViewModelBase
///
public IAsyncRelayCommand IncrementalCommand { get; }
+ ///
+ public IRelayCommand ResetStateCommand { get; }
+
///
public ObservableCollection Items { get; }
}
diff --git a/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.cs b/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.cs
index c7fa3c7b4..878bb4180 100644
--- a/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.cs
+++ b/src/ViewModels/ViewModels.Uwp/Base/InformationFlowViewModelBase/InformationFlowViewModelBase.cs
@@ -22,6 +22,7 @@ internal InformationFlowViewModelBase(CoreDispatcher dispatcher)
_dispatcher = dispatcher;
Items = new ObservableCollection();
+ ResetStateCommand = new RelayCommand(ResetState);
InitializeCommand = new AsyncRelayCommand(InitializeAsync);
ReloadCommand = new AsyncRelayCommand(ReloadAsync);
IncrementalCommand = new AsyncRelayCommand(IncrementalAsync);
@@ -83,11 +84,16 @@ private async Task InitializeAsync()
await ReloadAsync();
}
- private async Task ReloadAsync()
+ private void ResetState()
{
BeforeReload();
TryClear(Items);
ClearException();
+ }
+
+ private async Task ReloadAsync()
+ {
+ ResetState();
var task = _dispatcher.RunAsync(
CoreDispatcherPriority.Normal,