// This Source Code Form is subject to the terms of the MIT License. // If a copy of the MIT was not distributed with this file, You can obtain one at https://opensource.org/licenses/MIT. // Copyright (C) Leszek Pomianowski and WPF UI Contributors. // All Rights Reserved. using Wpf.Ui.Appearance; using Wpf.Ui.Controls; namespace DownloadManager.ViewModels.Pages; public partial class SettingsViewModel : ObservableObject, INavigationAware { private bool _isInitialized = false; [ObservableProperty] private string _appVersion = String.Empty; [ObservableProperty] private ApplicationTheme _currentTheme = ApplicationTheme.Unknown; public void OnNavigatedTo() { if (!_isInitialized) InitializeViewModel(); } public void OnNavigatedFrom() { } private void InitializeViewModel() { CurrentTheme = ApplicationThemeManager.GetAppTheme(); AppVersion = $"UiDesktopApp1 - {GetAssemblyVersion()}"; _isInitialized = true; } private string GetAssemblyVersion() { return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? String.Empty; } [RelayCommand] private void OnChangeTheme(string parameter) { switch (parameter) { case "theme_light": if (CurrentTheme == ApplicationTheme.Light) break; ApplicationThemeManager.Apply(ApplicationTheme.Light); CurrentTheme = ApplicationTheme.Light; break; default: if (CurrentTheme == ApplicationTheme.Dark) break; ApplicationThemeManager.Apply(ApplicationTheme.Dark); CurrentTheme = ApplicationTheme.Dark; break; } } }