Files
WinWARP/WinWARP.Core/ViewModels/SettingsViewModel.cs
T

48 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using WinWARP.Core.Services.Interfaces;
namespace WinWARP.Core.ViewModels;
public partial class SettingsViewModel : ObservableObject
{
private readonly ILocalizationService _localizationService;
private readonly INavigationService _navigationService;
public SettingsViewModel(ILocalizationService localizationService, INavigationService navigationService)
{
_navigationService = navigationService;
_localizationService = localizationService;
SelectedLanguage = _localizationService.GetCurrentLanguage();
Languages = new ObservableCollection<string>(_localizationService.GetSupportedLanguages());
}
[RelayCommand]
private void Navigate(object? tagParameter)
{
if (tagParameter is Type viewModelType)
{
var method = _navigationService.GetType().GetMethod("NavigateTo")?.MakeGenericMethod(viewModelType);
method?.Invoke(_navigationService, [null]);
}
}
[ObservableProperty]
public partial string SelectedLanguage
{
get; set;
}
partial void OnSelectedLanguageChanged(string value)
{
_localizationService.SetLanguageAsync(value);
}
public ObservableCollection<string> Languages;
}