mirror of
https://gitcode.com/gh_mirrors/se/Semi.Avalonia
synced 2026-04-05 08:46:34 +08:00
feat: redesign ThemeVariantDemo.
This commit is contained in:
@@ -4,18 +4,36 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.Pages"
|
||||
x:DataType="vm:ThemeVariantDemoViewModel"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800"
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<ThemeVariantScope Name="scope">
|
||||
<Design.DataContext>
|
||||
<vm:ThemeVariantDemoViewModel />
|
||||
</Design.DataContext>
|
||||
<StackPanel>
|
||||
<Border Theme="{StaticResource CardBorder}">
|
||||
<StackPanel>
|
||||
<ListBox
|
||||
Theme="{StaticResource CardRadioGroupListBox}"
|
||||
ItemsSource="{Binding ThemeVariants}"
|
||||
SelectedItem="{Binding SelectedThemeVariant}" />
|
||||
<DatePicker />
|
||||
<CalendarDatePicker />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<ThemeVariantScope RequestedThemeVariant="{Binding SelectedThemeVariant}">
|
||||
<Border Theme="{StaticResource CardBorder}">
|
||||
<StackPanel>
|
||||
<ListBox
|
||||
Theme="{StaticResource CardRadioGroupListBox}"
|
||||
ItemsSource="{Binding ThemeVariants}"
|
||||
SelectedItem="{Binding SelectedThemeVariant}" />
|
||||
<DatePicker />
|
||||
<CalendarDatePicker />
|
||||
<ToggleSwitch Content="Switch Theme" IsCheckedChanged="Switch_OnIsCheckedChanged" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</ThemeVariantScope>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
</StackPanel>
|
||||
</UserControl>
|
||||
@@ -1,8 +1,7 @@
|
||||
using Avalonia;
|
||||
using System.Collections.Generic;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Styling;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Semi.Avalonia.Demo.Pages;
|
||||
|
||||
@@ -11,10 +10,22 @@ public partial class ThemeVariantDemo : UserControl
|
||||
public ThemeVariantDemo()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = new ThemeVariantDemoViewModel();
|
||||
}
|
||||
}
|
||||
|
||||
private void Switch_OnIsCheckedChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
scope.RequestedThemeVariant = scope.ActualThemeVariant == ThemeVariant.Dark ? ThemeVariant.Light : ThemeVariant.Dark;
|
||||
}
|
||||
public partial class ThemeVariantDemoViewModel : ObservableObject
|
||||
{
|
||||
[ObservableProperty] private ThemeVariant? _selectedThemeVariant;
|
||||
|
||||
public IEnumerable<ThemeVariant> ThemeVariants =>
|
||||
[
|
||||
ThemeVariant.Default,
|
||||
ThemeVariant.Light,
|
||||
ThemeVariant.Dark,
|
||||
SemiTheme.Aquatic,
|
||||
SemiTheme.Desert,
|
||||
SemiTheme.Dust,
|
||||
SemiTheme.NightSky,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user