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 @@
-
-
-
+
+
+
-
+
-
+
-
-
-
-
+
+
+
+
-
@@ -103,7 +102,6 @@
CornerRadius="{DynamicResource CalendarCornerRadius}">
diff --git a/src/Semi.Avalonia/Controls/CaptionButtons.axaml b/src/Semi.Avalonia/Controls/CaptionButtons.axaml
index 1ab3b00..753cc3a 100644
--- a/src/Semi.Avalonia/Controls/CaptionButtons.axaml
+++ b/src/Semi.Avalonia/Controls/CaptionButtons.axaml
@@ -2,8 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
-
diff --git a/src/Semi.Avalonia/Controls/Carousel.axaml b/src/Semi.Avalonia/Controls/Carousel.axaml
index d6beab9..4b48df4 100644
--- a/src/Semi.Avalonia/Controls/Carousel.axaml
+++ b/src/Semi.Avalonia/Controls/Carousel.axaml
@@ -3,7 +3,6 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:Semi.Avalonia.Converters"
x:CompileBindings="True">
-
diff --git a/src/Semi.Avalonia/Controls/ComboBox.axaml b/src/Semi.Avalonia/Controls/ComboBox.axaml
index 0068c66..4742a82 100644
--- a/src/Semi.Avalonia/Controls/ComboBox.axaml
+++ b/src/Semi.Avalonia/Controls/ComboBox.axaml
@@ -32,6 +32,7 @@
+
@@ -114,8 +115,7 @@
ClipToBounds="False"
InheritsTransform="True"
IsLightDismissEnabled="True"
- IsOpen="{TemplateBinding IsDropDownOpen,
- Mode=TwoWay}"
+ IsOpen="{TemplateBinding IsDropDownOpen, Mode=TwoWay}"
PlacementTarget="Background"
WindowManagerAddShadowHint="False">
@@ -299,10 +300,12 @@
@@ -311,10 +314,12 @@
diff --git a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml
index a91ebf0..b5dcab8 100644
--- a/src/Semi.Avalonia/Controls/DataValidationErrors.axaml
+++ b/src/Semi.Avalonia/Controls/DataValidationErrors.axaml
@@ -2,7 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:collections="clr-namespace:System.Collections;assembly=netstandard">
-
diff --git a/src/Semi.Avalonia/Controls/DatePicker.axaml b/src/Semi.Avalonia/Controls/DatePicker.axaml
index 253ac10..9603b19 100644
--- a/src/Semi.Avalonia/Controls/DatePicker.axaml
+++ b/src/Semi.Avalonia/Controls/DatePicker.axaml
@@ -2,13 +2,14 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
+
+
diff --git a/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml b/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml
index 6addc9c..6fa26a2 100644
--- a/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml
+++ b/src/Semi.Avalonia/Controls/DateTimePickerShared.axaml
@@ -2,8 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
-
@@ -26,6 +24,7 @@
diff --git a/src/Semi.Avalonia/Controls/EmbeddableControlRoot.axaml b/src/Semi.Avalonia/Controls/EmbeddableControlRoot.axaml
index a0465d4..09a16db 100644
--- a/src/Semi.Avalonia/Controls/EmbeddableControlRoot.axaml
+++ b/src/Semi.Avalonia/Controls/EmbeddableControlRoot.axaml
@@ -1,6 +1,4 @@
-
-
diff --git a/src/Semi.Avalonia/Controls/Expander.axaml b/src/Semi.Avalonia/Controls/Expander.axaml
index a7aea15..b151aba 100644
--- a/src/Semi.Avalonia/Controls/Expander.axaml
+++ b/src/Semi.Avalonia/Controls/Expander.axaml
@@ -9,7 +9,7 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,8 +37,7 @@
Background="{DynamicResource ExpanderHeaderDefaultBackground}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
- IsChecked="{TemplateBinding IsExpanded,
- Mode=TwoWay}"
+ IsChecked="{TemplateBinding IsExpanded, Mode=TwoWay}"
IsEnabled="{TemplateBinding IsEnabled}"
TextElement.FontWeight="{DynamicResource ExpanderHeaderFontWeight}"
TextElement.Foreground="{DynamicResource ExpanderHeaderForeground}"
@@ -77,8 +76,7 @@
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Foreground="{DynamicResource ExpanderContentForeground}"
- IsVisible="{TemplateBinding IsExpanded,
- Mode=TwoWay}" />
+ IsVisible="{TemplateBinding IsExpanded, Mode=TwoWay}" />
diff --git a/src/Semi.Avalonia/Controls/GridSplitter.axaml b/src/Semi.Avalonia/Controls/GridSplitter.axaml
index 0748fa6..cbb9414 100644
--- a/src/Semi.Avalonia/Controls/GridSplitter.axaml
+++ b/src/Semi.Avalonia/Controls/GridSplitter.axaml
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/src/Semi.Avalonia/Controls/ListBox.axaml b/src/Semi.Avalonia/Controls/ListBox.axaml
index 34439ec..c8b738d 100644
--- a/src/Semi.Avalonia/Controls/ListBox.axaml
+++ b/src/Semi.Avalonia/Controls/ListBox.axaml
@@ -16,7 +16,7 @@
-
+
-
-
-
-
+
+
+
+
+
+
+
@@ -356,6 +365,9 @@
+
diff --git a/src/Semi.Avalonia/Controls/NumericUpDown.axaml b/src/Semi.Avalonia/Controls/NumericUpDown.axaml
index b970893..3a4210d 100644
--- a/src/Semi.Avalonia/Controls/NumericUpDown.axaml
+++ b/src/Semi.Avalonia/Controls/NumericUpDown.axaml
@@ -2,7 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
diff --git a/src/Semi.Avalonia/Controls/RefreshContainer.axaml b/src/Semi.Avalonia/Controls/RefreshContainer.axaml
index 48497c7..c785d79 100644
--- a/src/Semi.Avalonia/Controls/RefreshContainer.axaml
+++ b/src/Semi.Avalonia/Controls/RefreshContainer.axaml
@@ -2,7 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
diff --git a/src/Semi.Avalonia/Controls/RepeatButton.axaml b/src/Semi.Avalonia/Controls/RepeatButton.axaml
index 357c94f..ed8bafd 100644
--- a/src/Semi.Avalonia/Controls/RepeatButton.axaml
+++ b/src/Semi.Avalonia/Controls/RepeatButton.axaml
@@ -108,6 +108,7 @@
@@ -123,6 +124,7 @@
@@ -204,9 +206,9 @@
@@ -247,12 +249,12 @@
BasedOn="{StaticResource {x:Type RepeatButton}}"
TargetType="RepeatButton">
diff --git a/src/Semi.Avalonia/Controls/Slider.axaml b/src/Semi.Avalonia/Controls/Slider.axaml
index 1af8a6b..af43caf 100644
--- a/src/Semi.Avalonia/Controls/Slider.axaml
+++ b/src/Semi.Avalonia/Controls/Slider.axaml
@@ -2,7 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
diff --git a/src/Semi.Avalonia/Controls/SplitButton.axaml b/src/Semi.Avalonia/Controls/SplitButton.axaml
index 027b580..98e76d7 100644
--- a/src/Semi.Avalonia/Controls/SplitButton.axaml
+++ b/src/Semi.Avalonia/Controls/SplitButton.axaml
@@ -224,6 +224,7 @@
@@ -306,7 +307,7 @@
diff --git a/src/Semi.Avalonia/Controls/SplitView.axaml b/src/Semi.Avalonia/Controls/SplitView.axaml
index 852ffc2..f940c67 100644
--- a/src/Semi.Avalonia/Controls/SplitView.axaml
+++ b/src/Semi.Avalonia/Controls/SplitView.axaml
@@ -1,6 +1,4 @@
-
-
diff --git a/src/Semi.Avalonia/Controls/TabControl.axaml b/src/Semi.Avalonia/Controls/TabControl.axaml
index bd514f1..a408fd3 100644
--- a/src/Semi.Avalonia/Controls/TabControl.axaml
+++ b/src/Semi.Avalonia/Controls/TabControl.axaml
@@ -2,7 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
diff --git a/src/Semi.Avalonia/Controls/TabStrip.axaml b/src/Semi.Avalonia/Controls/TabStrip.axaml
index fa5a9d1..23ea298 100644
--- a/src/Semi.Avalonia/Controls/TabStrip.axaml
+++ b/src/Semi.Avalonia/Controls/TabStrip.axaml
@@ -2,7 +2,6 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
-
diff --git a/src/Semi.Avalonia/Controls/TextBox.axaml b/src/Semi.Avalonia/Controls/TextBox.axaml
index 30b425c..2c4314b 100644
--- a/src/Semi.Avalonia/Controls/TextBox.axaml
+++ b/src/Semi.Avalonia/Controls/TextBox.axaml
@@ -24,25 +24,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
@@ -138,9 +139,12 @@
+