diff --git a/src/Snap.Hutao/Snap.Hutao/Message/BackgroundImageTypeChangedMessage.cs b/src/Snap.Hutao/Snap.Hutao/Message/BackgroundImageTypeChangedMessage.cs
new file mode 100644
index 00000000..ec85335e
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Message/BackgroundImageTypeChangedMessage.cs
@@ -0,0 +1,8 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Message;
+
+internal sealed class BackgroundImageTypeChangedMessage
+{
+}
diff --git a/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml b/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml
index b5728fb2..45f98c12 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml
@@ -18,7 +18,7 @@
@@ -31,7 +31,7 @@
public MainView()
{
- DataContext = Ioc.Default.GetRequiredService();
+ IServiceProvider serviceProvider = Ioc.Default;
+
+ MainViewModel mainViewModel = serviceProvider.GetRequiredService();
+
+ DataContext = mainViewModel;
InitializeComponent();
- IServiceProvider serviceProvider = Ioc.Default;
+ mainViewModel.Initialize(BackgroundImagePresenter);
navigationService = serviceProvider.GetRequiredService();
if (navigationService is INavigationInitialization navigationInitialization)
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Main/IMainViewModelInitialization.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Main/IMainViewModelInitialization.cs
new file mode 100644
index 00000000..6dcf8b04
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Main/IMainViewModelInitialization.cs
@@ -0,0 +1,11 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Microsoft.UI.Xaml.Controls;
+
+namespace Snap.Hutao.ViewModel.Main;
+
+internal interface IMainViewModelInitialization
+{
+ void Initialize(Image backgroundImagePresenter);
+}
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/MainViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Main/MainViewModel.cs
similarity index 79%
rename from src/Snap.Hutao/Snap.Hutao/ViewModel/MainViewModel.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Main/MainViewModel.cs
index fa333520..4235565d 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/MainViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Main/MainViewModel.cs
@@ -1,23 +1,37 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
+using CommunityToolkit.Mvvm.Messaging;
using CommunityToolkit.WinUI.Animations;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media.Animation;
using Snap.Hutao.Control.Animation;
using Snap.Hutao.Control.Theme;
+using Snap.Hutao.Message;
using Snap.Hutao.Service.BackgroundImage;
+using Snap.Hutao.ViewModel.Main;
namespace Snap.Hutao.ViewModel;
[ConstructorGenerated]
[Injection(InjectAs.Singleton)]
-internal sealed partial class MainViewModel : Abstraction.ViewModel
+internal sealed partial class MainViewModel : Abstraction.ViewModel, IMainViewModelInitialization, IRecipient
{
private readonly IBackgroundImageService backgroundImageService;
private readonly ITaskContext taskContext;
private BackgroundImage? previousBackgroundImage;
+ private Image backgroundImagePresenter;
+
+ public void Initialize(Image backgroundImagePresenter)
+ {
+ this.backgroundImagePresenter = backgroundImagePresenter;
+ }
+
+ public void Receive(BackgroundImageTypeChangedMessage message)
+ {
+ UpdateBackgroundAsync(backgroundImagePresenter).SafeForget();
+ }
[Command("UpdateBackgroundCommand")]
private async Task UpdateBackgroundAsync(Image presenter)
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs
index 5ba8cffd..a34ce387 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs
@@ -1,6 +1,7 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
+using CommunityToolkit.Mvvm.Messaging;
using Microsoft.UI.Xaml.Controls;
using Microsoft.Windows.AppLifecycle;
using Snap.Hutao.Core;
@@ -54,6 +55,7 @@ internal sealed partial class SettingViewModel : Abstraction.ViewModel
private readonly IUserService userService;
private readonly ITaskContext taskContext;
private readonly AppOptions appOptions;
+ private readonly IMessenger messenger;
private NameValue? selectedBackdropType;
private NameValue? selectedBackgroundImageType;
@@ -100,6 +102,7 @@ internal sealed partial class SettingViewModel : Abstraction.ViewModel
if (SetProperty(ref selectedBackgroundImageType, value) && value is not null)
{
AppOptions.BackgroundImageType = value.Value;
+ messenger.Send(new Message.BackgroundImageTypeChangedMessage());
}
}
}