using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging.Messages; using MaterialDesignThemes.Wpf; namespace Sheas_Cealer.Preses; internal partial class GlobalPres : ObservableRecipient, IRecipient> { internal GlobalPres() => IsActive = true; [ObservableProperty, NotifyPropertyChangedRecipients] private bool? isLightTheme = null; partial void OnIsLightThemeChanged(bool? value) { PaletteHelper paletteHelper = new(); Theme newTheme = paletteHelper.GetTheme(); newTheme.SetBaseTheme(value.HasValue ? value.GetValueOrDefault() ? BaseTheme.Light : BaseTheme.Dark : BaseTheme.Inherit); paletteHelper.SetTheme(newTheme); } protected override void Broadcast(T oldValue, T newValue, string? propertyName) => Messenger.Send(new PropertyChangedMessage(this, propertyName, oldValue!, newValue!)); public void Receive(PropertyChangedMessage message) => GetType().GetProperty(message.PropertyName!)!.SetValue(this, message.NewValue); }