Forge
csharp4405de34
1using Avalonia.Controls;
2using Avalonia.Controls.Templates;
3using Avalonia.Interactivity;
4using CascadeIDE.Models;
5using CascadeIDE.Services;
6using CascadeIDE.ViewModels;
7
8namespace CascadeIDE.Views;
9
10[SettingsPanel(SettingsPanelIds.Themes, "Тема IDE", "Оформление", order: 0)]
11public partial class SettingsThemesPanelView : UserControl
12{
13 public SettingsThemesPanelView()
14 {
15 InitializeComponent();
16 Loaded += OnLoaded;
17 ThemeFilesList.SelectionChanged += OnThemeFileSelectionChanged;
18 }
19
20 private void OnLoaded(object? sender, RoutedEventArgs e)
21 {
22 ThemeFilesList.ItemTemplate = new FuncDataTemplate<SettingsThemeCatalog.ThemeFileEntry>(
23 (entry, _) => new TextBlock { Text = entry?.DisplayName ?? "", Padding = new Avalonia.Thickness(4, 2) });
24 ThemeFilesList.ItemsSource = SettingsThemeCatalog.DiscoverBundled();
25 }
26
27 private async void OnThemeFileSelectionChanged(object? sender, SelectionChangedEventArgs e)
28 {
29 if (ThemeFilesList.SelectedItem is not SettingsThemeCatalog.ThemeFileEntry entry)
30 return;
31 if (DataContext is not MainWindowViewModel vm)
32 return;
33
34 await UiThemeApply.ApplyOnUiThreadAsync(UiThemeApply.GetThemeJsonFromFile(entry.FullPath));
35 }
36}
37
View only · write via MCP/CIDE