diff --git a/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.axaml b/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.axaml index abcbd39..4dc7d42 100644 --- a/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.axaml +++ b/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.axaml @@ -7,7 +7,6 @@ x:DataType="viewModels:ColorItemViewModel"> M5 7C3.89543 7 3 7.89543 3 9V19C3 20.1046 3.89543 21 5 21H15C16.1046 21 17 20.1046 17 19V9C17 7.89543 16.1046 7 15 7H5Z,M7 4C7 2.89543 7.89543 2 9 2H20C21.1046 2 22 2.89543 22 4V15C22 16.1046 21.1046 17 20 17H19V8C19 6 18 5 16 5H7V4Z - diff --git a/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml b/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml index a557a7b..b3d46be 100644 --- a/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml +++ b/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml @@ -5,9 +5,7 @@ xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels" x:CompileBindings="True" x:DataType="viewModels:FunctionalColorGroupViewModel"> - - diff --git a/demo/Semi.Avalonia.Demo/Themes/TabMenu.axaml b/demo/Semi.Avalonia.Demo/Themes/TabMenu.axaml index ccdbbf4..12fc2df 100644 --- a/demo/Semi.Avalonia.Demo/Themes/TabMenu.axaml +++ b/demo/Semi.Avalonia.Demo/Themes/TabMenu.axaml @@ -1,8 +1,6 @@ - - - diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml index 4a5bbbc..0c12b22 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -5,8 +5,11 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:pages="using:Semi.Avalonia.Demo.Pages" + xmlns:views="clr-namespace:Semi.Avalonia.Demo.Views" d:DesignHeight="450" d:DesignWidth="800" + x:CompileBindings="True" + x:DataType="views:MainViewModel" mc:Ignorable="d"> @@ -36,43 +39,29 @@ Margin="8,0" VerticalAlignment="Center" Classes="Secondary" - Text="{Binding #tab.SelectedItem.Header}" /> + Text="{ReflectionBinding #tab.SelectedItem.Header}" /> - - - - - - - - - - + diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs b/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs index a6aec59..b7e74a8 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml.cs @@ -1,8 +1,10 @@ using System; +using System.Collections.ObjectModel; using Avalonia; using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Styling; +using CommunityToolkit.Mvvm.ComponentModel; namespace Semi.Avalonia.Demo.Views; @@ -11,6 +13,7 @@ public partial class MainView : UserControl public MainView() { InitializeComponent(); + this.DataContext = new MainViewModel(); } private void ToggleButton_OnIsCheckedChanged(object sender, RoutedEventArgs e) @@ -38,4 +41,36 @@ public partial class MainView : UserControl var launcher = top.Launcher; await launcher.LaunchUriAsync(new Uri("https://docs.irihi.tech/semi")); } +} + +public partial class MainViewModel: ObservableObject +{ + public ObservableCollection Themes { get; } = new() + { + new ThemeItem("Light", ThemeVariant.Light), + new ThemeItem("Dark", ThemeVariant.Dark), + new ThemeItem("Aquatic", SemiTheme.Aquatic), + new ThemeItem("Desert", SemiTheme.Desert), + new ThemeItem("Dust", SemiTheme.Dust), + new ThemeItem("NightSky", SemiTheme.NightSky), + }; + + [ObservableProperty] private ThemeItem? _selectedTheme; + + partial void OnSelectedThemeChanged(ThemeItem? oldValue, ThemeItem? newValue) + { + if (newValue is null) return; + var app = Application.Current; + if (app is not null) + { + app.RequestedThemeVariant = newValue.Theme; + } + } + +} + +public class ThemeItem(string name, ThemeVariant theme) +{ + public string Name { get; set; } = name; + public ThemeVariant Theme { get; set; } = theme; } \ No newline at end of file diff --git a/src/Semi.Avalonia.ColorPicker/Controls/ColorPicker.axaml b/src/Semi.Avalonia.ColorPicker/Controls/ColorPicker.axaml index 514af34..ea7d2a7 100644 --- a/src/Semi.Avalonia.ColorPicker/Controls/ColorPicker.axaml +++ b/src/Semi.Avalonia.ColorPicker/Controls/ColorPicker.axaml @@ -5,7 +5,6 @@ xmlns:converters="using:Avalonia.Controls.Converters" xmlns:primitives="using:Avalonia.Controls.Primitives" x:CompileBindings="True"> - diff --git a/src/Semi.Avalonia.ColorPicker/Controls/ColorPreviewer.axaml b/src/Semi.Avalonia.ColorPicker/Controls/ColorPreviewer.axaml index 67a5f86..f49f41c 100644 --- a/src/Semi.Avalonia.ColorPicker/Controls/ColorPreviewer.axaml +++ b/src/Semi.Avalonia.ColorPicker/Controls/ColorPreviewer.axaml @@ -4,7 +4,6 @@ xmlns:converters="using:Avalonia.Controls.Converters" xmlns:pc="using:Avalonia.Controls.Primitives.Converters" x:CompileBindings="True"> - diff --git a/src/Semi.Avalonia.ColorPicker/Controls/ColorSlider.axaml b/src/Semi.Avalonia.ColorPicker/Controls/ColorSlider.axaml index 3389404..8b7fe64 100644 --- a/src/Semi.Avalonia.ColorPicker/Controls/ColorSlider.axaml +++ b/src/Semi.Avalonia.ColorPicker/Controls/ColorSlider.axaml @@ -3,8 +3,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converters="using:Avalonia.Controls.Converters" x:CompileBindings="True"> - - diff --git a/src/Semi.Avalonia.ColorPicker/Controls/ColorSpectrum.axaml b/src/Semi.Avalonia.ColorPicker/Controls/ColorSpectrum.axaml index a2f5ced..4bc308e 100644 --- a/src/Semi.Avalonia.ColorPicker/Controls/ColorSpectrum.axaml +++ b/src/Semi.Avalonia.ColorPicker/Controls/ColorSpectrum.axaml @@ -4,7 +4,6 @@ xmlns:controls="using:Avalonia.Controls" xmlns:converters="using:Avalonia.Controls.Converters" x:CompileBindings="True"> - diff --git a/src/Semi.Avalonia.DataGrid/DataGrid.axaml b/src/Semi.Avalonia.DataGrid/DataGrid.axaml index 7793490..6a25ff3 100644 --- a/src/Semi.Avalonia.DataGrid/DataGrid.axaml +++ b/src/Semi.Avalonia.DataGrid/DataGrid.axaml @@ -3,7 +3,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:collections="using:Avalonia.Collections" x:CompileBindings="True"> - diff --git a/src/Semi.Avalonia.TreeDataGrid/Dark.axaml b/src/Semi.Avalonia.TreeDataGrid/Dark.axaml index 2f5ee54..f49426f 100644 --- a/src/Semi.Avalonia.TreeDataGrid/Dark.axaml +++ b/src/Semi.Avalonia.TreeDataGrid/Dark.axaml @@ -1,5 +1,4 @@ - diff --git a/src/Semi.Avalonia.TreeDataGrid/Index.axaml b/src/Semi.Avalonia.TreeDataGrid/Index.axaml index b557af1..f67ed3c 100644 --- a/src/Semi.Avalonia.TreeDataGrid/Index.axaml +++ b/src/Semi.Avalonia.TreeDataGrid/Index.axaml @@ -1,5 +1,4 @@ - diff --git a/src/Semi.Avalonia.TreeDataGrid/Light.axaml b/src/Semi.Avalonia.TreeDataGrid/Light.axaml index f15e970..73c6c8b 100644 --- a/src/Semi.Avalonia.TreeDataGrid/Light.axaml +++ b/src/Semi.Avalonia.TreeDataGrid/Light.axaml @@ -1,5 +1,4 @@ - diff --git a/src/Semi.Avalonia.TreeDataGrid/Shared.axaml b/src/Semi.Avalonia.TreeDataGrid/Shared.axaml index b48fab4..dd2a475 100644 --- a/src/Semi.Avalonia.TreeDataGrid/Shared.axaml +++ b/src/Semi.Avalonia.TreeDataGrid/Shared.axaml @@ -1,5 +1,4 @@ - M17.549 15.659L12.753 21.139C12.6591 21.2464 12.5434 21.3325 12.4135 21.3915C12.2836 21.4505 12.1427 21.481 12 21.481C11.8574 21.481 11.7164 21.4505 11.5865 21.3915C11.4566 21.3325 11.3409 21.2464 11.247 21.139L6.45101 15.659C5.88501 15.011 6.34501 14 7.20401 14H16.796C17.656 14 18.115 15.012 17.549 15.659Z diff --git a/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml b/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml index 9a83369..c9e2cbe 100644 --- a/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml +++ b/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml @@ -2,7 +2,6 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:conv="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls.TreeDataGrid"> - diff --git a/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml b/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml index d3e18ef..8aa84a6 100644 --- a/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml +++ b/src/Semi.Avalonia/Controls/AutoCompleteBox.axaml @@ -9,9 +9,9 @@ - - - + + + diff --git a/src/Semi.Avalonia/Controls/Button.axaml b/src/Semi.Avalonia/Controls/Button.axaml index 0a46233..27ce9d5 100644 --- a/src/Semi.Avalonia/Controls/Button.axaml +++ b/src/Semi.Avalonia/Controls/Button.axaml @@ -113,6 +113,7 @@ @@ -128,6 +129,7 @@ @@ -209,9 +211,9 @@ @@ -252,12 +254,12 @@ BasedOn="{StaticResource {x:Type Button}}" TargetType="Button"> diff --git a/src/Semi.Avalonia/Controls/ButtonSpinner.axaml b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml index e7526b4..8af8827 100644 --- a/src/Semi.Avalonia/Controls/ButtonSpinner.axaml +++ b/src/Semi.Avalonia/Controls/ButtonSpinner.axaml @@ -8,9 +8,9 @@ - - - + + + - - - - + + + + + diff --git a/src/Semi.Avalonia/Controls/Calendar.axaml b/src/Semi.Avalonia/Controls/Calendar.axaml index 14d3264..15a6bbb 100644 --- a/src/Semi.Avalonia/Controls/Calendar.axaml +++ b/src/Semi.Avalonia/Controls/Calendar.axaml @@ -2,14 +2,12 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:CompileBindings="True"> - - - + @@ -31,9 +29,9 @@ - - - + + +