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,