Compare commits

...

17 Commits

Author SHA1 Message Date
Zhang Dian
1062175204 misc: bump version. 2025-10-04 11:33:54 +08:00
Zhang Dian
0dda40d322 Merge pull request #672 from irihitech/split
ready for Avalonia 11.3.7
2025-10-04 11:30:33 +08:00
Zhang Dian
37feb8a9a7 feat: set HorizontalAlignment to Stretch for PanelPlacementSelector in SplitViewDemo. 2025-10-04 11:21:42 +08:00
Zhang Dian
c632c6c1f5 feat: upgrade Avalonia.Controls.DataGrid to 11.3.7. 2025-10-04 11:19:25 +08:00
Zhang Dian
be2b25a94b feat: implement IsEditable for ComboBox. 2025-10-04 11:11:07 +08:00
rabbitism
47c6899b94 fix: fix copilot comments. 2025-10-04 10:58:32 +08:00
rabbitism
975d14a36f feat: upgrade to 11.3.7, implement splitview changes. 2025-10-04 10:48:38 +08:00
Dong Bin
7a13de00a6 Merge pull request #669 from irihitech/trayicon
Designed a new TrayIcon and NativeMenu for macOS
2025-09-29 15:29:50 +08:00
Zhang Dian
f7ce4aef30 feat: update application icons for Android and Desktop projects. 2025-09-29 01:33:53 +08:00
Zhang Dian
f9a85734d1 feat: add Activate command to ApplicationViewModel and bind to TrayIcon. 2025-09-29 01:33:18 +08:00
Zhang Dian
9dd846f6be feat: add JumpTo functionality in ApplicationViewModel and integrate with menu. 2025-09-28 18:11:55 +08:00
Zhang Dian
5384de7b23 feat: update TrayIcon in macOS. 2025-09-28 16:29:02 +08:00
Dong Bin
7ccb6fd41a Merge pull request #668 from irihitech/clean
Reduce compile warning count
2025-09-27 14:27:15 +08:00
Zhang Dian
521ed1bd0f misc: reduce publish warning. 2025-09-26 02:10:19 +08:00
Zhang Dian
55d472300e misc: remove x:CompileBindings attribute from multiple XAML files. 2025-09-26 02:10:16 +08:00
Dong Bin
a45f50005c Merge pull request #667 from irihitech/variable
Add search functionality to VariablesDemo
2025-09-26 00:14:29 +08:00
Zhang Dian
cd9daf11da feat: add search functionality to VariablesDemo and update layout. 2025-09-25 18:46:24 +08:00
45 changed files with 818 additions and 546 deletions

View File

@@ -1,7 +1,7 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<AvaloniaVersion>11.3.0</AvaloniaVersion> <AvaloniaVersion>11.3.7</AvaloniaVersion>
<DataGridVersion>11.3.0</DataGridVersion> <DataGridVersion>11.3.7</DataGridVersion>
<CommunityToolkitVersion>8.4.0</CommunityToolkitVersion> <CommunityToolkitVersion>8.4.0</CommunityToolkitVersion>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 717 B

View File

@@ -14,9 +14,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<AndroidResource Include="Icon.png"> <AndroidResource Include="Icon.png" Link="Resources\drawable\Icon.png"/>
<Link>Resources\drawable\Icon.png</Link>
</AndroidResource>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -4,6 +4,7 @@
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport> <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationIcon>..\Semi.Avalonia.Demo\Assets\irihi.ico</ApplicationIcon>
<!-- Uncomment below to enable Native AOT compilation--> <!-- Uncomment below to enable Native AOT compilation-->
<!--<PublishAot>true</PublishAot>--> <!--<PublishAot>true</PublishAot>-->
</PropertyGroup> </PropertyGroup>

View File

@@ -4,6 +4,7 @@
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport> <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationIcon>..\Semi.Avalonia.Demo\Assets\irihi.ico</ApplicationIcon>
<!-- Uncomment below to enable Native AOT compilation--> <!-- Uncomment below to enable Native AOT compilation-->
<!--<PublishAot>true</PublishAot>--> <!--<PublishAot>true</PublishAot>-->
</PropertyGroup> </PropertyGroup>

View File

@@ -1,11 +1,11 @@
<Application <Application
Name="Semi Avalonia Demo"
x:Class="Semi.Avalonia.Demo.App" x:Class="Semi.Avalonia.Demo.App"
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True"
x:DataType="viewModels:ApplicationViewModel"
xmlns:semi="https://irihi.tech/semi" xmlns:semi="https://irihi.tech/semi"
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"> xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels"
x:DataType="vm:ApplicationViewModel">
<Application.Styles> <Application.Styles>
<semi:SemiTheme Locale="zh-CN" /> <semi:SemiTheme Locale="zh-CN" />
<semi:SemiPopupAnimations /> <semi:SemiPopupAnimations />
@@ -20,12 +20,30 @@
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
</ResourceDictionary> </ResourceDictionary>
</Application.Resources> </Application.Resources>
<NativeMenu.Menu>
<NativeMenu>
<NativeMenuItem
Header="About Us"
Command="{Binding JumpToCommand}"
CommandParameter="{Binding $self.Header}" />
</NativeMenu>
</NativeMenu.Menu>
<TrayIcon.Icons> <TrayIcon.Icons>
<TrayIcons> <TrayIcons>
<TrayIcon Icon="/Assets/irihi.ico" MacOSProperties.IsTemplateIcon="true" ToolTipText="Semi Avalonia Demo"> <TrayIcon
Icon="{OnPlatform Default=/Assets/irihi.ico, macOS=/Assets/irihi2.ico}"
MacOSProperties.IsTemplateIcon="true"
Command="{Binding ActivateCommand}"
ToolTipText="Semi Avalonia Demo">
<TrayIcon.Menu> <TrayIcon.Menu>
<NativeMenu> <NativeMenu>
<NativeMenuItem Header="Exit" Command="{Binding ExitCommand}" /> <NativeMenuItem
Header="About Us"
Command="{Binding JumpToCommand}"
CommandParameter="{Binding $self.Header}" />
<NativeMenuItem
Header="Exit"
Command="{Binding ExitCommand}" />
</NativeMenu> </NativeMenu>
</TrayIcon.Menu> </TrayIcon.Menu>
</TrayIcon> </TrayIcon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

View File

@@ -8,7 +8,6 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels"
x:DataType="vm:AboutUsViewModel" x:DataType="vm:AboutUsViewModel"
x:CompileBindings="True"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
mc:Ignorable="d"> mc:Ignorable="d">

View File

@@ -7,7 +7,6 @@
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:CompileBindings="False"
x:DataType="vm:AutoCompleteBoxDemoViewModel" x:DataType="vm:AutoCompleteBoxDemoViewModel"
mc:Ignorable="d"> mc:Ignorable="d">
<Design.DataContext> <Design.DataContext>
@@ -30,40 +29,40 @@
<AutoCompleteBox <AutoCompleteBox
Watermark="Please select a State" Watermark="Please select a State"
ValueMemberBinding="{Binding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
Classes="Large" Classes="Large"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
Classes="Small" Classes="Small"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
Classes="Bordered" Classes="Bordered"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
IsEnabled="False" IsEnabled="False"
Watermark="Disabled" Watermark="Disabled"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
InnerLeftContent="https://" InnerLeftContent="https://"
InnerRightContent=".com" InnerRightContent=".com"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<AutoCompleteBox <AutoCompleteBox
Width="100" Width="100"
Classes="Large" Classes="Large"
Watermark="Large" Watermark="Large"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
Width="100" Width="100"
Watermark="Default" Watermark="Default"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
Width="100" Width="100"
Classes="Small" Classes="Small"
Watermark="Small" Watermark="Small"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
@@ -71,17 +70,17 @@
Width="100" Width="100"
IsEnabled="False" IsEnabled="False"
Watermark="Disabled" Watermark="Disabled"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
Width="100" Width="100"
Classes="Bordered" Classes="Bordered"
Watermark="Bordered" Watermark="Bordered"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
<AutoCompleteBox <AutoCompleteBox
Width="100" Width="100"
Classes="Bordered" Classes="Bordered"
IsEnabled="False" IsEnabled="False"
ValueMemberBinding="{ReflectionBinding Name}" /> ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>

View File

@@ -8,6 +8,10 @@
d:DesignWidth="800" d:DesignWidth="800"
mc:Ignorable="d"> mc:Ignorable="d">
<StackPanel HorizontalAlignment="Left" Spacing="20"> <StackPanel HorizontalAlignment="Left" Spacing="20">
<StackPanel Orientation="Horizontal">
<ToggleSwitch Name="showSpinCheck" IsChecked="True" Content="Show Button Spinner" />
<ToggleSwitch Name="allowSpinCheck" IsChecked="True" Content="Allow Spin" />
</StackPanel>
<ButtonSpinner <ButtonSpinner
Height="30" Height="30"
AllowSpin="{Binding #allowSpinCheck.IsChecked}" AllowSpin="{Binding #allowSpinCheck.IsChecked}"

View File

@@ -7,46 +7,51 @@
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels"
d:DesignHeight="800" d:DesignHeight="800"
d:DesignWidth="800" d:DesignWidth="800"
mc:Ignorable="d"> mc:Ignorable="d"
x:DataType="vm:ComboBoxDemoViewModel">
<Design.DataContext> <Design.DataContext>
<vm:ComboBoxDemoViewModel /> <vm:ComboBoxDemoViewModel />
</Design.DataContext> </Design.DataContext>
<StackPanel Spacing="20"> <ScrollViewer>
<StackPanel.Styles> <StackPanel Spacing="20">
<Style Selector="ComboBox"> <StackPanel.Styles>
<Setter Property="Width" Value="300" /> <Style Selector="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Items}" /> <Setter Property="Width" Value="300" />
</Style> <Setter Property="ItemsSource" Value="{Binding Items}" />
</StackPanel.Styles> </Style>
</StackPanel.Styles>
<ComboBox /> <ComboBox />
<ComboBox Classes="ClearButton" /> <ComboBox Classes="ClearButton" />
<ComboBox PlaceholderText="Please Select" /> <ComboBox PlaceholderText="Please Select" />
<ComboBox IsEnabled="False" /> <ComboBox IsEnabled="False" />
<ComboBox Classes="Large" IsEnabled="False" /> <ComboBox Classes="Large" IsEnabled="False" />
<ComboBox Classes="Small" /> <ComboBox Classes="Small" />
<ComboBox Classes="Bordered" /> <ComboBox Classes="Bordered" />
<ComboBox Classes="Bordered" IsEnabled="False" /> <ComboBox Classes="Bordered" IsEnabled="False" />
<ComboBox> <ComboBox>
<ComboBox.SelectionBoxItemTemplate> <ComboBox.SelectionBoxItemTemplate>
<DataTemplate DataType="x:String"> <DataTemplate DataType="x:String">
<ContentControl BorderThickness="1" <ContentControl BorderThickness="1"
BorderBrush="Gold" BorderBrush="Gold"
Content="{Binding}" /> Content="{Binding}" />
</DataTemplate> </DataTemplate>
</ComboBox.SelectionBoxItemTemplate> </ComboBox.SelectionBoxItemTemplate>
</ComboBox> </ComboBox>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<ComboBox Width="100" Classes="Large" PlaceholderText="Large" /> <ComboBox Width="100" Classes="Large" PlaceholderText="Large" />
<ComboBox Width="100" PlaceholderText="Default" /> <ComboBox Width="100" PlaceholderText="Default" />
<ComboBox Width="100" Classes="Small" PlaceholderText="Small" /> <ComboBox Width="100" Classes="Small" PlaceholderText="Small" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<ComboBox Width="100" IsEnabled="False" PlaceholderText="Disabled" />
<ComboBox Width="100" Classes="Bordered" PlaceholderText="Bordered" />
<ComboBox Width="100" Classes="Bordered" IsEnabled="False" />
</StackPanel>
<ToggleSwitch Name="toggle" IsChecked="True" Content="IsEditable" />
<ComboBox IsEditable="{Binding #toggle.IsChecked}" />
</StackPanel> </StackPanel>
</ScrollViewer>
<StackPanel Orientation="Horizontal">
<ComboBox Width="100" IsEnabled="False" PlaceholderText="Disabled" />
<ComboBox Width="100" Classes="Bordered" PlaceholderText="Bordered" />
<ComboBox Width="100" Classes="Bordered" IsEnabled="False" />
</StackPanel>
</StackPanel>
</UserControl> </UserControl>

View File

@@ -7,7 +7,6 @@
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels;assembly=Semi.Avalonia.Demo" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels;assembly=Semi.Avalonia.Demo"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:CompileBindings="True"
x:DataType="vm:DataGridDemoViewModel" x:DataType="vm:DataGridDemoViewModel"
mc:Ignorable="d"> mc:Ignorable="d">
<TabControl> <TabControl>

View File

@@ -8,7 +8,6 @@
xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages" xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages"
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="1450" mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="1450"
x:DataType="vm:HighContrastDemoViewModel" x:DataType="vm:HighContrastDemoViewModel"
x:CompileBindings="True"
x:Class="Semi.Avalonia.Demo.Pages.HighContrastDemo"> x:Class="Semi.Avalonia.Demo.Pages.HighContrastDemo">
<Design.DataContext> <Design.DataContext>
<vm:HighContrastDemoViewModel /> <vm:HighContrastDemoViewModel />

View File

@@ -27,7 +27,8 @@ public partial class NotificationDemo : UserControl
if (sender is RadioButton b && b.Content is string s) if (sender is RadioButton b && b.Content is string s)
{ {
Enum.TryParse<NotificationPosition>(s, out var t); Enum.TryParse<NotificationPosition>(s, out var t);
_manager.Position = t; if (_manager is not null)
_manager.Position = t;
} }
} }

View File

@@ -8,7 +8,6 @@
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:CompileBindings="True"
x:DataType="viewModels:PaletteDemoViewModel" x:DataType="viewModels:PaletteDemoViewModel"
mc:Ignorable="d"> mc:Ignorable="d">
<Design.DataContext> <Design.DataContext>

View File

@@ -8,7 +8,6 @@
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:DataType="vm:RefreshContainerDemoViewModel" x:DataType="vm:RefreshContainerDemoViewModel"
x:CompileBindings="True"
mc:Ignorable="d"> mc:Ignorable="d">
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Top"> <DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Top">
<Label DockPanel.Dock="Top">A control that supports pull to refresh</Label> <Label DockPanel.Dock="Top">A control that supports pull to refresh</Label>

View File

@@ -7,276 +7,187 @@
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels"
d:DesignHeight="1000" d:DesignHeight="1000"
d:DesignWidth="800" d:DesignWidth="800"
x:DataType="vm:SplitViewDemoViewModel"
mc:Ignorable="d"> mc:Ignorable="d">
<Design.DataContext> <Design.DataContext>
<vm:SplitViewDemoViewModel /> <vm:SplitViewDemoViewModel />
</Design.DataContext> </Design.DataContext>
<Border> <Border>
<Grid ColumnDefinitions="*,400"> <Grid ColumnDefinitions="*,400">
<Border Grid.Column="1" VerticalAlignment="Top" Margin="10 0 0 0"> <Border
<Grid RowDefinitions="*, *, *, *, *, *" ColumnDefinitions="Auto, *"> Grid.Column="1"
Margin="10,0,0,0"
VerticalAlignment="Top">
<Grid ColumnDefinitions="Auto, *" RowDefinitions="*, *, *, *, *, *">
<Label <Label
Grid.Row="0" Grid.Column="0" Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Content="IsPaneOpen" /> Content="IsPaneOpen" />
<ToggleSwitch <ToggleSwitch
Grid.Row="0" Grid.Column="1" Name="PaneOpenButton"
Name="PaneOpenButton" /> Grid.Row="0"
Grid.Column="1" />
<Label <Label
Grid.Row="1" Grid.Column="0" Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Content="UseLightDismissOverlayMode" /> Content="UseLightDismissOverlayMode" />
<ToggleSwitch <ToggleSwitch
Grid.Row="1" Grid.Column="1" Name="UseLightDismissOverlayModeButton"
Name="UseLightDismissOverlayModeButton" /> Grid.Row="1"
Grid.Column="1" />
<Label <Label
Grid.Row="2" Grid.Column="0" Grid.Row="2"
Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Content="Placement" /> Content="Placement" />
<ToggleSwitch <ComboBox
Grid.Row="2" Grid.Column="1" Grid.Row="2"
Name="PanePlacementButton" Grid.Column="1"
OffContent="Left" Name="PanelPlacementSelector"
OnContent="Right" /> HorizontalAlignment="Stretch"
ItemsSource="{x:Static vm:SplitViewDemoViewModel.Placements}"
SelectedItem="{x:Static SplitViewPanePlacement.Left}"
/>
<Label <Label
Grid.Row="3" Grid.Column="0" Grid.Row="3"
Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Content="DisplayMode" /> Content="DisplayMode" />
<ComboBox <ComboBox
Grid.Row="3" Grid.Column="1"
Name="DisplayModeSelector" Name="DisplayModeSelector"
Grid.Row="3"
Grid.Column="1"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
ItemsSource="{x:Static vm:SplitViewDemoViewModel.DisplayModes}" ItemsSource="{x:Static vm:SplitViewDemoViewModel.DisplayModes}"
SelectedItem="{x:Static SplitViewDisplayMode.CompactInline}" /> SelectedItem="{x:Static SplitViewDisplayMode.CompactInline}" />
<Label <Label
Grid.Row="4" Grid.Column="0" Grid.Row="4"
Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Content="{Binding #CompactPaneLengthSlider.Value, StringFormat='{}CompactPaneLength: {0}'}" /> Content="{Binding #CompactPaneLengthSlider.Value, StringFormat='{}CompactPaneLength: {0}'}" />
<Slider <Slider
Grid.Row="4" Grid.Column="1"
Name="CompactPaneLengthSlider" Name="CompactPaneLengthSlider"
Grid.Row="4"
Grid.Column="1"
IsSnapToTickEnabled="True"
Maximum="128" Maximum="128"
Minimum="0" Minimum="0"
TickFrequency="1" TickFrequency="1"
IsSnapToTickEnabled="True"
Value="48" /> Value="48" />
<Label <Label
Grid.Row="5" Grid.Column="0" Grid.Row="5"
Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Content="{Binding #OpenPaneLengthSlider.Value,StringFormat='{}OpenPaneLength: {0}'}" /> Content="{Binding #OpenPaneLengthSlider.Value, StringFormat='{}OpenPaneLength: {0}'}" />
<Slider <Slider
Grid.Row="5" Grid.Column="1"
Name="OpenPaneLengthSlider" Name="OpenPaneLengthSlider"
Grid.Row="5"
Grid.Column="1"
IsSnapToTickEnabled="True"
Maximum="500" Maximum="500"
Minimum="128" Minimum="128"
TickFrequency="1" TickFrequency="1"
IsSnapToTickEnabled="True"
Value="256" /> Value="256" />
</Grid> </Grid>
</Border> </Border>
<TabControl Grid.Column="0"> <SplitView
<TabItem Header="Default"> Grid.Column="0"
<Border Name="SplitView"
BorderBrush="{DynamicResource SemiGrey1}" CompactPaneLength="{Binding #CompactPaneLengthSlider.Value}"
BorderThickness="1"> DisplayMode="{Binding #DisplayModeSelector.SelectedItem}"
<SplitView IsPaneOpen="{Binding #PaneOpenButton.IsChecked, Mode=TwoWay}"
Name="SplitView" OpenPaneLength="{Binding #OpenPaneLengthSlider.Value}"
IsPaneOpen="{Binding #PaneOpenButton.IsChecked,Mode=TwoWay}" PanePlacement="{Binding #PanelPlacementSelector.SelectedItem}"
UseLightDismissOverlayMode="{Binding #UseLightDismissOverlayModeButton.IsChecked}" UseLightDismissOverlayMode="{Binding #UseLightDismissOverlayModeButton.IsChecked}">
PanePlacement="{Binding #PanePlacementButton.IsChecked}" <SplitView.Background>
DisplayMode="{Binding #DisplayModeSelector.SelectedItem}" <LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
CompactPaneLength="{Binding #CompactPaneLengthSlider.Value}" <GradientStop Offset="0" Color="#6b4c1b" />
OpenPaneLength="{Binding #OpenPaneLengthSlider.Value}"> <GradientStop Offset="1" Color="#291e10" />
<SplitView.Background> </LinearGradientBrush>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%"> </SplitView.Background>
<GradientStop Color="#6b4c1b" Offset="0" /> <SplitView.Pane>
<GradientStop Color="#291e10" Offset="1" /> <Grid RowDefinitions="Auto,*,Auto">
</LinearGradientBrush> <StackPanel Grid.Row="0" Orientation="Horizontal" Margin="8 12">
</SplitView.Background> <ToggleSwitch
<SplitView.Pane> Content="{StaticResource SemiIconSidebar}"
<Grid RowDefinitions="Auto,*,Auto"> IsChecked="{Binding #SplitView.IsPaneOpen}"
<TextBlock Theme="{DynamicResource IconBorderlessToggleSwitch}" />
Grid.Row="0" <TextBlock
Name="PaneHeader" Name="PaneHeader"
Margin="8,12" VerticalAlignment="Center"
FontWeight="Bold" Margin="8 0"
Text="Playlist" /> FontWeight="Bold"
<ListBox Text="Playlist" />
Grid.Row="1" </StackPanel>
ItemsSource="{Binding Songs}" />
<ToggleSwitch <ListBox Grid.Row="1" ItemsSource="{Binding Songs}" />
Grid.Row="2"
Theme="{DynamicResource IconBorderlessToggleSwitch}" </Grid>
Content="{StaticResource SemiIconSidebar}" </SplitView.Pane>
HorizontalAlignment="Left"
IsChecked="{Binding #SplitView.IsPaneOpen}" />
</Grid>
</SplitView.Pane>
<Panel> <Panel>
<Panel.Styles> <Panel.Styles>
<Style Selector="Image#AlbumCover"> <Style Selector="Image#AlbumCover">
<Style.Animations> <Style.Animations>
<Animation IterationCount="Infinite" Duration="0:0:40"> <Animation IterationCount="Infinite" Duration="0:0:40">
<KeyFrame Cue="0%"> <KeyFrame Cue="0%">
<Setter Property="RotateTransform.Angle" Value="0" /> <Setter Property="RotateTransform.Angle" Value="0" />
</KeyFrame> </KeyFrame>
<KeyFrame Cue="100%"> <KeyFrame Cue="100%">
<Setter Property="RotateTransform.Angle" Value="360" /> <Setter Property="RotateTransform.Angle" Value="360" />
</KeyFrame> </KeyFrame>
</Animation> </Animation>
</Style.Animations> </Style.Animations>
</Style> </Style>
</Panel.Styles> </Panel.Styles>
<Image <Image
Source="/Assets/WORLD.png" Name="AlbumCover"
Name="AlbumCover" Width="200"
Width="200" Height="200"
Height="200" /> Source="/Assets/WORLD.png" />
<Arc <Arc
Width="290" Width="290"
Height="290" Height="290"
StartAngle="0" StartAngle="0"
SweepAngle="360" StrokeJoin="Round"
StrokeJoin="Round" StrokeLineCap="Round"
StrokeLineCap="Round" StrokeThickness="45"
StrokeThickness="45"> SweepAngle="360">
<Arc.Stroke> <Arc.Stroke>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,0%"> <LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,0%">
<GradientStop Color="#010101" Offset="0" /> <GradientStop Offset="0" Color="#010101" />
<GradientStop Color="#363636" Offset="0.5" /> <GradientStop Offset="0.5" Color="#363636" />
<GradientStop Color="#010101" Offset="1" /> <GradientStop Offset="1" Color="#010101" />
</LinearGradientBrush> </LinearGradientBrush>
</Arc.Stroke> </Arc.Stroke>
</Arc> </Arc>
<Arc <Arc
Width="294" Width="294"
Height="294" Height="294"
StartAngle="0" StartAngle="0"
SweepAngle="360" Stroke="Black"
StrokeJoin="Round" StrokeJoin="Round"
StrokeLineCap="Round" StrokeLineCap="Round"
StrokeThickness="4" StrokeThickness="4"
Stroke="Black" /> SweepAngle="360" />
<Arc <Arc
Width="310" Width="310"
Height="310" Height="310"
StartAngle="0" Opacity="0.1"
SweepAngle="360" StartAngle="0"
StrokeJoin="Round" Stroke="#C6CACD"
StrokeLineCap="Round" StrokeJoin="Round"
StrokeThickness="10" StrokeLineCap="Round"
Stroke="#C6CACD" StrokeThickness="10"
Opacity="0.1" /> SweepAngle="360" />
</Panel> </Panel>
</SplitView>
</SplitView>
</Border>
</TabItem>
<TabItem Header="VerticalSplitView">
<Border
BorderBrush="{DynamicResource SemiGrey1}"
BorderThickness="1">
<SplitView
Name="SplitView2"
Theme="{DynamicResource VerticalSplitView}"
IsPaneOpen="{Binding #PaneOpenButton.IsChecked,Mode=TwoWay}"
UseLightDismissOverlayMode="{Binding #UseLightDismissOverlayModeButton.IsChecked}"
PanePlacement="{Binding #PanePlacementButton.IsChecked}"
DisplayMode="{Binding #DisplayModeSelector.SelectedItem}"
CompactPaneLength="{Binding #CompactPaneLengthSlider.Value}"
OpenPaneLength="{Binding #OpenPaneLengthSlider.Value}">
<SplitView.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#6b4c1b" Offset="0" />
<GradientStop Color="#291e10" Offset="1" />
</LinearGradientBrush>
</SplitView.Background>
<SplitView.Pane>
<Grid RowDefinitions="Auto,Auto,*">
<ToggleSwitch
Grid.Row="0"
Theme="{DynamicResource IconBorderlessToggleSwitch}"
Content="{StaticResource SemiIconSidebar}"
HorizontalAlignment="Left"
IsChecked="{Binding #SplitView2.IsPaneOpen}" />
<TextBlock
Grid.Row="1"
Margin="8,12"
FontWeight="Bold"
Text="Playlist" />
<ListBox
Grid.Row="2"
ItemsSource="{Binding Songs}" />
</Grid>
</SplitView.Pane>
<Panel>
<Panel.Styles>
<Style Selector="Image#AlbumCover2">
<Style.Animations>
<Animation IterationCount="Infinite" Duration="0:0:40">
<KeyFrame Cue="0%">
<Setter Property="RotateTransform.Angle" Value="0" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="RotateTransform.Angle" Value="360" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
</Panel.Styles>
<Image
Source="/Assets/WORLD.png"
Name="AlbumCover2"
Width="200"
Height="200" />
<Arc
Width="290"
Height="290"
StartAngle="0"
SweepAngle="360"
StrokeJoin="Round"
StrokeLineCap="Round"
StrokeThickness="45">
<Arc.Stroke>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,0%">
<GradientStop Color="#010101" Offset="0" />
<GradientStop Color="#363636" Offset="0.5" />
<GradientStop Color="#010101" Offset="1" />
</LinearGradientBrush>
</Arc.Stroke>
</Arc>
<Arc
Width="294"
Height="294"
StartAngle="0"
SweepAngle="360"
StrokeJoin="Round"
StrokeLineCap="Round"
StrokeThickness="4"
Stroke="Black" />
<Arc
Width="310"
Height="310"
StartAngle="0"
SweepAngle="360"
StrokeJoin="Round"
StrokeLineCap="Round"
StrokeThickness="10"
Stroke="#C6CACD"
Opacity="0.1" />
</Panel>
</SplitView>
</Border>
</TabItem>
</TabControl>
</Grid> </Grid>
</Border> </Border>
</UserControl> </UserControl>

View File

@@ -7,7 +7,6 @@
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels;assembly=Semi.Avalonia.Demo" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels;assembly=Semi.Avalonia.Demo"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:CompileBindings="True"
x:DataType="vm:TabControlDemoViewModel" x:DataType="vm:TabControlDemoViewModel"
mc:Ignorable="d"> mc:Ignorable="d">
<ScrollViewer> <ScrollViewer>

View File

@@ -5,7 +5,6 @@
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Semi.Avalonia.Demo.Pages.TabStripDemo" x:Class="Semi.Avalonia.Demo.Pages.TabStripDemo"
x:CompileBindings="True"
x:DataType="vm:TabStripDemoViewModel"> x:DataType="vm:TabStripDemoViewModel">
<Design.DataContext> <Design.DataContext>
<vm:TabStripDemoViewModel /> <vm:TabStripDemoViewModel />

View File

@@ -6,7 +6,6 @@
xmlns:converters="clr-namespace:Semi.Avalonia.Demo.Converters" xmlns:converters="clr-namespace:Semi.Avalonia.Demo.Converters"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Semi.Avalonia.Demo.Pages.TreeDataGridDemo" x:Class="Semi.Avalonia.Demo.Pages.TreeDataGridDemo"
x:CompileBindings="True"
x:DataType="vm:TreeDataGridDemoViewModel"> x:DataType="vm:TreeDataGridDemoViewModel">
<UserControl.Resources> <UserControl.Resources>
<converters:FileIconConverter x:Key="FileIconConverter"> <converters:FileIconConverter x:Key="FileIconConverter">

View File

@@ -14,10 +14,9 @@ public partial class TreeDataGridDemo : UserControl
private void SelectedPath_KeyDown(object? sender, KeyEventArgs e) private void SelectedPath_KeyDown(object? sender, KeyEventArgs e)
{ {
if (e.Key == Key.Enter) if (e.Key == Key.Enter && DataContext is TreeDataGridDemoViewModel vm)
{ {
var vm = DataContext as TreeDataGridDemoViewModel; vm.FilesContext.SelectedPath = (sender as TextBox)?.Text;
vm.FilesContext.SelectedPath = (sender as TextBox)!.Text;
} }
} }
} }

View File

@@ -8,7 +8,6 @@
xmlns:vm="clr-namespace:Semi.Avalonia.Demo.Pages" xmlns:vm="clr-namespace:Semi.Avalonia.Demo.Pages"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:CompileBindings="True"
x:DataType="vm:TreeViewVm" x:DataType="vm:TreeViewVm"
mc:Ignorable="d"> mc:Ignorable="d">

View File

@@ -21,33 +21,40 @@ public class TreeViewVm : ObservableObject
public TreeViewVm() public TreeViewVm()
{ {
Items = new ObservableCollection<TreeViewItemVm>() Items =
{ [
new TreeViewItemVm() { Name = "Item 1", Id = "1" }, new TreeViewItemVm { Name = "Item 1", Id = "1" },
new TreeViewItemVm() { Name = "Item 2", Id = "2" }, new TreeViewItemVm { Name = "Item 2", Id = "2" },
new TreeViewItemVm() new TreeViewItemVm
{ {
Name = "Item 3", Id = "3", Items = new ObservableCollection<TreeViewItemVm>() Name = "Item 3", Id = "3", Items =
{ [
new TreeViewItemVm() { Name = "Item 3.1", Id = "3.1" }, new TreeViewItemVm { Name = "Item 3.1", Id = "3.1" },
new TreeViewItemVm() { Name = "Item 3.2", Id = "3.2" }, new TreeViewItemVm { Name = "Item 3.2", Id = "3.2" },
new TreeViewItemVm() { Name = "Item 3.3", Id = "3.3" }, new TreeViewItemVm { Name = "Item 3.3", Id = "3.3" }
}, ],
}, }
};
MultipleLevelItems = new(); ];
for (int i = 1; i < 6; i++)
MultipleLevelItems = [];
for (var i = 1; i < 6; i++)
{ {
FirstItem firstItem = new FirstItem { Id = i, Name = $"FirstItem {i}" }; var firstItem = new FirstItem
firstItem.SecondItems = new();
for (int j = 1; j < 6; j++)
{ {
SecondItem secondItem = new SecondItem { Id = j, Name = $"SecondItem {j}" }; Id = i, Name = $"FirstItem {i}",
secondItem.ThirdItemItems = new(); SecondItems = []
for (int k = 1; k < 6; k++) };
for (var j = 1; j < 6; j++)
{
var secondItem = new SecondItem
{ {
ThirdItem thirdItem = new ThirdItem { Id = k, Name = $"ThirdItem {k}" }; Id = j, Name = $"SecondItem {j}",
ThirdItemItems = []
};
for (var k = 1; k < 6; k++)
{
var thirdItem = new ThirdItem { Id = k, Name = $"ThirdItem {k}" };
secondItem.ThirdItemItems.Add(thirdItem); secondItem.ThirdItemItems.Add(thirdItem);
} }
@@ -61,9 +68,9 @@ public class TreeViewVm : ObservableObject
public partial class TreeViewItemVm : ObservableObject public partial class TreeViewItemVm : ObservableObject
{ {
public ObservableCollection<TreeViewItemVm> Items { get; set; } public ObservableCollection<TreeViewItemVm> Items { get; set; } = [];
public string Name { get; set; } public string? Name { get; set; }
public string Id { get; set; } public string? Id { get; set; }
} }
public class ItemBase public class ItemBase

View File

@@ -6,89 +6,99 @@
xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages" xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Semi.Avalonia.Demo.Pages.VariablesDemo" x:Class="Semi.Avalonia.Demo.Pages.VariablesDemo"
x:DataType="vm:VariablesDemoViewModel" x:DataType="vm:VariablesDemoViewModel">
x:CompileBindings="True">
<Design.DataContext> <Design.DataContext>
<vm:VariablesDemoViewModel /> <vm:VariablesDemoViewModel />
</Design.DataContext> </Design.DataContext>
<DataGrid <Grid RowDefinitions="Auto, *">
Margin="8" <TextBox
CanUserReorderColumns="True" Grid.Row="0"
CanUserResizeColumns="True" Width="600"
CanUserSortColumns="True" Margin="8"
HeadersVisibility="All" Classes="ClearButton"
IsReadOnly="True" Text="{Binding SearchText}"
ItemsSource="{Binding GridData}"> Watermark="Input Variable Category/ResourceKey/Type/Value/Description" />
<DataGrid.Columns>
<DataGridTemplateColumn <DataGrid
Width="300" Grid.Row="1"
x:DataType="vm:VariableItem" Margin="8"
Header="ResourceKey"> CanUserReorderColumns="True"
<DataGridTemplateColumn.CellTemplate> CanUserResizeColumns="True"
<DataTemplate DataType="vm:VariableItem"> CanUserSortColumns="True"
<SelectableTextBlock HeadersVisibility="All"
Margin="12,0" IsReadOnly="True"
VerticalAlignment="Center" ItemsSource="{Binding GridData}">
Text="{Binding ResourceKey}" /> <DataGrid.Columns>
</DataTemplate> <DataGridTemplateColumn
</DataGridTemplateColumn.CellTemplate> Width="300"
</DataGridTemplateColumn> x:DataType="vm:VariableItem"
<DataGridTemplateColumn Header="ResourceKey">
Width="200" <DataGridTemplateColumn.CellTemplate>
x:DataType="vm:VariableItem" <DataTemplate DataType="vm:VariableItem">
Header="Type"> <SelectableTextBlock
<DataGridTemplateColumn.CellTemplate> Margin="12,0"
<DataTemplate DataType="vm:VariableItem"> VerticalAlignment="Center"
<SelectableTextBlock Text="{Binding ResourceKey}" />
Margin="12,0" </DataTemplate>
VerticalAlignment="Center" </DataGridTemplateColumn.CellTemplate>
Text="{Binding Type.Name}" /> </DataGridTemplateColumn>
</DataTemplate> <DataGridTemplateColumn
</DataGridTemplateColumn.CellTemplate> Width="200"
</DataGridTemplateColumn> x:DataType="vm:VariableItem"
<DataGridTemplateColumn Header="Type">
Width="200" <DataGridTemplateColumn.CellTemplate>
x:DataType="vm:VariableItem" <DataTemplate DataType="vm:VariableItem">
Header="Value"> <SelectableTextBlock
<DataGridTemplateColumn.CellTemplate> Margin="12,0"
<DataTemplate DataType="vm:VariableItem"> VerticalAlignment="Center"
<SelectableTextBlock Text="{Binding Type.Name}" />
Margin="12,0" </DataTemplate>
VerticalAlignment="Center" </DataGridTemplateColumn.CellTemplate>
Text="{Binding Value}" </DataGridTemplateColumn>
TextWrapping="Wrap" /> <DataGridTemplateColumn
</DataTemplate> Width="200"
</DataGridTemplateColumn.CellTemplate> x:DataType="vm:VariableItem"
</DataGridTemplateColumn> Header="Value">
<DataGridTemplateColumn <DataGridTemplateColumn.CellTemplate>
Width="*" <DataTemplate DataType="vm:VariableItem">
x:DataType="vm:VariableItem" <SelectableTextBlock
Header="Description"> Margin="12,0"
<DataGridTemplateColumn.CellTemplate> VerticalAlignment="Center"
<DataTemplate DataType="vm:VariableItem"> Text="{Binding Value}"
<SelectableTextBlock TextWrapping="Wrap" />
Margin="12,0" </DataTemplate>
VerticalAlignment="Center" </DataGridTemplateColumn.CellTemplate>
Text="{Binding Description}" </DataGridTemplateColumn>
TextWrapping="Wrap" /> <DataGridTemplateColumn
</DataTemplate> Width="*"
</DataGridTemplateColumn.CellTemplate> x:DataType="vm:VariableItem"
</DataGridTemplateColumn> Header="Description">
<DataGridTemplateColumn <DataGridTemplateColumn.CellTemplate>
Width="100" <DataTemplate DataType="vm:VariableItem">
x:DataType="vm:VariableItem" <SelectableTextBlock
Header="CopyText" Margin="12,0"
SortMemberPath="Duration"> VerticalAlignment="Center"
<DataGridTemplateColumn.CellTemplate> Text="{Binding Description}"
<DataTemplate DataType="vm:VariableItem"> TextWrapping="Wrap" />
<Button </DataTemplate>
Command="{Binding $parent[pages:VariablesDemo].Copy}" </DataGridTemplateColumn.CellTemplate>
CommandParameter="{Binding CopyText}" </DataGridTemplateColumn>
Theme="{DynamicResource IconBorderlessButton}" <DataGridTemplateColumn
Content="{StaticResource SemiIconCopy}" /> Width="100"
</DataTemplate> x:DataType="vm:VariableItem"
</DataGridTemplateColumn.CellTemplate> Header="CopyText"
</DataGridTemplateColumn> SortMemberPath="Duration">
</DataGrid.Columns> <DataGridTemplateColumn.CellTemplate>
</DataGrid> <DataTemplate DataType="vm:VariableItem">
<Button
Command="{Binding $parent[pages:VariablesDemo].Copy}"
CommandParameter="{Binding CopyText}"
Theme="{DynamicResource IconBorderlessButton}"
Content="{StaticResource SemiIconCopy}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl> </UserControl>

View File

@@ -3,6 +3,7 @@
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@@ -1,8 +1,7 @@
<ResourceDictionary <ResourceDictionary
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls" xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls">
x:CompileBindings="True">
<ControlTheme x:Key="{x:Type controls:ColorDetailControl}" TargetType="controls:ColorDetailControl"> <ControlTheme x:Key="{x:Type controls:ColorDetailControl}" TargetType="controls:ColorDetailControl">
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="controls:ColorDetailControl"> <ControlTemplate TargetType="controls:ColorDetailControl">

View File

@@ -1,8 +1,7 @@
<ResourceDictionary <ResourceDictionary
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Semi.Avalonia.Demo.Controls" xmlns:controls="using:Semi.Avalonia.Demo.Controls">
x:CompileBindings="True">
<Design.PreviewWith> <Design.PreviewWith>
<controls:ColorItemControl /> <controls:ColorItemControl />
</Design.PreviewWith> </Design.PreviewWith>

View File

@@ -4,7 +4,6 @@
xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls" xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls"
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"
xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages" xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages"
x:CompileBindings="True"
x:DataType="viewModels:FunctionalColorGroupViewModel"> x:DataType="viewModels:FunctionalColorGroupViewModel">
<ControlTheme x:Key="{x:Type controls:FunctionalColorGroupControl}" TargetType="controls:FunctionalColorGroupControl"> <ControlTheme x:Key="{x:Type controls:FunctionalColorGroupControl}" TargetType="controls:FunctionalColorGroupControl">
<Setter Property="Template"> <Setter Property="Template">

View File

@@ -4,7 +4,6 @@
xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls" xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls"
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels" xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"
xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages" xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages"
x:CompileBindings="True"
x:DataType="viewModels:ShadowGroupViewModel"> x:DataType="viewModels:ShadowGroupViewModel">
<ControlTheme x:Key="{x:Type controls:ShadowGroupControl}" TargetType="controls:ShadowGroupControl"> <ControlTheme x:Key="{x:Type controls:ShadowGroupControl}" TargetType="controls:ShadowGroupControl">
<Setter Property="Template"> <Setter Property="Template">

View File

@@ -1,12 +1,37 @@
using Avalonia; using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
namespace Semi.Avalonia.Demo.ViewModels; namespace Semi.Avalonia.Demo.ViewModels;
public partial class ApplicationViewModel : ObservableObject public partial class ApplicationViewModel : ObservableObject
{ {
[RelayCommand]
private void Activate()
{
if (Application.Current?.ApplicationLifetime is not IClassicDesktopStyleApplicationLifetime desktop) return;
var mainWindow = desktop.MainWindow;
if (mainWindow is not null && !mainWindow.IsActive)
{
if (mainWindow.WindowState is WindowState.Minimized)
{
mainWindow.WindowState = WindowState.Normal;
}
mainWindow.Activate();
}
}
[RelayCommand]
private void JumpTo(string header)
{
Activate();
WeakReferenceMessenger.Default.Send(header, "JumpTo");
}
[RelayCommand] [RelayCommand]
private void Exit() private void Exit()
{ {

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using Avalonia.Controls; using Avalonia.Controls;
@@ -9,7 +10,7 @@ namespace Semi.Avalonia.Demo.ViewModels;
public partial class IconDemoViewModel : ObservableObject public partial class IconDemoViewModel : ObservableObject
{ {
private readonly IResourceDictionary? _resources = new Icons(); private readonly Icons _resources = new();
private readonly Dictionary<string, IconItem> _filledIcons = new(); private readonly Dictionary<string, IconItem> _filledIcons = new();
private readonly Dictionary<string, IconItem> _strokedIcons = new(); private readonly Dictionary<string, IconItem> _strokedIcons = new();
@@ -21,8 +22,6 @@ public partial class IconDemoViewModel : ObservableObject
public void InitializeResources() public void InitializeResources()
{ {
if (_resources is null) return;
foreach (var provider in _resources.MergedDictionaries) foreach (var provider in _resources.MergedDictionaries)
{ {
if (provider is not ResourceDictionary dic) continue; if (provider is not ResourceDictionary dic) continue;
@@ -30,16 +29,17 @@ public partial class IconDemoViewModel : ObservableObject
foreach (var key in dic.Keys) foreach (var key in dic.Keys)
{ {
if (dic[key] is not Geometry geometry) continue; if (dic[key] is not Geometry geometry) continue;
var resourceKey = key.ToString() ?? string.Empty;
var icon = new IconItem var icon = new IconItem
{ {
ResourceKey = key.ToString(), ResourceKey = resourceKey,
Geometry = geometry Geometry = geometry
}; };
if (key.ToString().EndsWith("Stroked")) if (resourceKey.EndsWith("Stroked", StringComparison.InvariantCultureIgnoreCase))
_strokedIcons[key.ToString().ToLowerInvariant()] = icon; _strokedIcons[resourceKey] = icon;
else else
_filledIcons[key.ToString().ToLowerInvariant()] = icon; _filledIcons[resourceKey] = icon;
} }
} }
@@ -48,16 +48,16 @@ public partial class IconDemoViewModel : ObservableObject
partial void OnSearchTextChanged(string? value) partial void OnSearchTextChanged(string? value)
{ {
var search = value?.ToLowerInvariant() ?? string.Empty; var search = string.IsNullOrWhiteSpace(value) ? string.Empty : value.Trim();
FilteredFilledIcons.Clear(); FilteredFilledIcons.Clear();
foreach (var pair in _filledIcons.Where(i => i.Key.Contains(search))) foreach (var pair in _filledIcons.Where(kv => kv.Key.Contains(search, StringComparison.InvariantCultureIgnoreCase)))
{ {
FilteredFilledIcons.Add(pair.Value); FilteredFilledIcons.Add(pair.Value);
} }
FilteredStrokedIcons.Clear(); FilteredStrokedIcons.Clear();
foreach (var pair in _strokedIcons.Where(i => i.Key.Contains(search))) foreach (var pair in _strokedIcons.Where(kv => kv.Key.Contains(search, StringComparison.InvariantCultureIgnoreCase)))
{ {
FilteredStrokedIcons.Add(pair.Value); FilteredStrokedIcons.Add(pair.Value);
} }

View File

@@ -26,4 +26,12 @@ public class SplitViewDemoViewModel : ObservableObject
SplitViewDisplayMode.Overlay, SplitViewDisplayMode.Overlay,
SplitViewDisplayMode.CompactOverlay, SplitViewDisplayMode.CompactOverlay,
]; ];
public static ObservableCollection<SplitViewPanePlacement> Placements { get; set; } =
[
SplitViewPanePlacement.Left,
SplitViewPanePlacement.Right,
SplitViewPanePlacement.Top,
SplitViewPanePlacement.Bottom
];
} }

View File

@@ -19,9 +19,15 @@ public partial class FilesPageViewModel : ObservableObject
public IList<string> Drives { get; } public IList<string> Drives { get; }
public HierarchicalTreeDataGridSource<FileNodeViewModel> Source { get; } public HierarchicalTreeDataGridSource<FileNodeViewModel> Source { get; }
[ObservableProperty] private string _selectedDrive; [ObservableProperty] private string _selectedDrive;
[ObservableProperty] private string? _selectedPath; private string? _selectedPath;
[ObservableProperty] private FileNodeViewModel? _root; [ObservableProperty] private FileNodeViewModel? _root;
public string? SelectedPath
{
get => _selectedPath;
set => SetSelectedPath(value);
}
partial void OnSelectedDriveChanged(string value) partial void OnSelectedDriveChanged(string value)
{ {
Root = new FileNodeViewModel(value, true, true); Root = new FileNodeViewModel(value, true, true);
@@ -31,11 +37,6 @@ public partial class FilesPageViewModel : ObservableObject
} }
} }
partial void OnSelectedPathChanged(string? value)
{
SetSelectedPath(value);
}
public FilesPageViewModel() public FilesPageViewModel()
{ {
Drives = DriveInfo.GetDrives().Select(x => x.Name).ToList(); Drives = DriveInfo.GetDrives().Select(x => x.Name).ToList();
@@ -48,7 +49,7 @@ public partial class FilesPageViewModel : ObservableObject
SelectedDrive = Drives.FirstOrDefault() ?? "/"; SelectedDrive = Drives.FirstOrDefault() ?? "/";
} }
Source = new HierarchicalTreeDataGridSource<FileNodeViewModel>(Array.Empty<FileNodeViewModel>()) Source = new HierarchicalTreeDataGridSource<FileNodeViewModel>([])
{ {
Columns = Columns =
{ {
@@ -108,16 +109,14 @@ public partial class FilesPageViewModel : ObservableObject
foreach (var i in e.SelectedItems) foreach (var i in e.SelectedItems)
Trace.WriteLine($"Selected '{i?.Path}'"); Trace.WriteLine($"Selected '{i?.Path}'");
} }
private void SetSelectedPath(string? path)
private void SetSelectedPath(string? value)
{ {
if (string.IsNullOrEmpty(value)) if (string.IsNullOrEmpty(path))
{ {
Source.RowSelection!.Clear(); Source.RowSelection!.Clear();
return; return;
} }
var path = value;
var components = new Stack<string>(); var components = new Stack<string>();
DirectoryInfo? d = null; DirectoryInfo? d = null;
@@ -148,7 +147,7 @@ public partial class FilesPageViewModel : ObservableObject
if (driveIndex >= 0) if (driveIndex >= 0)
SelectedDrive = Drives[driveIndex]; SelectedDrive = Drives[driveIndex];
FileNodeViewModel? node = _root; var node = Root;
index = new IndexPath(0); index = new IndexPath(0);
while (node is not null && components.Count > 0) while (node is not null && components.Count > 0)
@@ -162,7 +161,7 @@ public partial class FilesPageViewModel : ObservableObject
} }
} }
Source.Items = [Root]; Source.Items = [Root!];
Source.RowSelection!.SelectedIndex = index; Source.RowSelection!.SelectedIndex = index;
} }
} }
@@ -275,8 +274,8 @@ public partial class FileNodeViewModel : ObservableObject, IEditableObject
}; };
} }
void IEditableObject.BeginEdit() => _undoName = _name; void IEditableObject.BeginEdit() => _undoName = Name;
void IEditableObject.CancelEdit() => _name = _undoName!; void IEditableObject.CancelEdit() => Name = _undoName ?? string.Empty;
void IEditableObject.EndEdit() => _undoName = null; void IEditableObject.EndEdit() => _undoName = null;
private void OnChanged(object sender, FileSystemEventArgs e) private void OnChanged(object sender, FileSystemEventArgs e)

View File

@@ -10,9 +10,10 @@ using Semi.Avalonia.Tokens;
namespace Semi.Avalonia.Demo.ViewModels; namespace Semi.Avalonia.Demo.ViewModels;
public class VariablesDemoViewModel : ObservableObject public partial class VariablesDemoViewModel : ObservableObject
{ {
public DataGridCollectionView GridData { get; set; } public DataGridCollectionView GridData { get; set; }
[ObservableProperty] private string _searchText = string.Empty;
public VariablesDemoViewModel() public VariablesDemoViewModel()
{ {
@@ -30,7 +31,7 @@ public class VariablesDemoViewModel : ObservableObject
GridData.GroupDescriptions.Add(new DataGridPathGroupDescription(nameof(VariableItem.Category))); GridData.GroupDescriptions.Add(new DataGridPathGroupDescription(nameof(VariableItem.Category)));
} }
private static string GetValueString(object? value) private static string? GetValueString(object? value)
{ {
if (value is null) return string.Empty; if (value is null) return string.Empty;
@@ -45,6 +46,28 @@ public class VariablesDemoViewModel : ObservableObject
}; };
} }
partial void OnSearchTextChanged(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
GridData.Filter = _ => true;
GridData.Refresh();
return;
}
var search = value.Trim();
GridData.Filter = item =>
{
if (item is not VariableItem variableItem) return false;
return (variableItem.Category?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
(variableItem.ResourceKey?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
(variableItem.Value?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
(variableItem.Type?.Name.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
(variableItem.Description?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false);
};
GridData.Refresh();
}
private static List<VariableItem> Tokens { get; set; } = private static List<VariableItem> Tokens { get; set; } =
[ [
new("Height", "SemiHeightControlSmall"), new("Height", "SemiHeightControlSmall"),
@@ -55,6 +78,11 @@ public class VariablesDemoViewModel : ObservableObject
new("Icon Size", "SemiWidthIconMedium"), new("Icon Size", "SemiWidthIconMedium"),
new("Icon Size", "SemiWidthIconLarge"), new("Icon Size", "SemiWidthIconLarge"),
new("Icon Size", "SemiWidthIconExtraLarge"), new("Icon Size", "SemiWidthIconExtraLarge"),
new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingExtraSmall"),
new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingSmall"),
new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingMedium"),
new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingLarge"),
new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingFull"),
new("Border CornerRadius", "SemiBorderRadiusExtraSmall"), new("Border CornerRadius", "SemiBorderRadiusExtraSmall"),
new("Border CornerRadius", "SemiBorderRadiusSmall"), new("Border CornerRadius", "SemiBorderRadiusSmall"),
new("Border CornerRadius", "SemiBorderRadiusMedium"), new("Border CornerRadius", "SemiBorderRadiusMedium"),

View File

@@ -8,7 +8,6 @@
xmlns:views="clr-namespace:Semi.Avalonia.Demo.Views" xmlns:views="clr-namespace:Semi.Avalonia.Demo.Views"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:CompileBindings="True"
x:DataType="views:MainViewModel" x:DataType="views:MainViewModel"
mc:Ignorable="d"> mc:Ignorable="d">
<UserControl.Resources> <UserControl.Resources>

View File

@@ -9,6 +9,7 @@ using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Styling; using Avalonia.Styling;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
namespace Semi.Avalonia.Demo.Views; namespace Semi.Avalonia.Demo.Views;
@@ -18,6 +19,19 @@ public partial class MainView : UserControl
{ {
InitializeComponent(); InitializeComponent();
this.DataContext = new MainViewModel(); this.DataContext = new MainViewModel();
WeakReferenceMessenger.Default.Register<string, string>(this, "JumpTo", MessageHandler);
}
private void MessageHandler(object _, string message)
{
foreach (var item in tab.ItemsView)
{
if (item is TabItem tabItem && tabItem.Header is not null && tabItem.Header.Equals(message))
{
tab.SelectedItem = tabItem;
break;
}
}
} }
} }
@@ -233,4 +247,4 @@ public class MenuItemViewModel
public ICommand? Command { get; set; } public ICommand? Command { get; set; }
public object? CommandParameter { get; set; } public object? CommandParameter { get; set; }
public IList<MenuItemViewModel>? Items { get; set; } public IList<MenuItemViewModel>? Items { get; set; }
} }

View File

@@ -3,14 +3,14 @@
<TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>11.2.1.10</Version> <Version>11.3.7</Version>
<Authors>IRIHI Technology Co., Ltd.</Authors> <Authors>IRIHI Technology Co., Ltd.</Authors>
<Description>Avalonia Theme inspired by Semi Design.</Description> <Description>Avalonia Theme inspired by Semi Design.</Description>
<RepositoryUrl>https://github.com/irihitech/Semi.Avalonia</RepositoryUrl> <RepositoryUrl>https://github.com/irihitech/Semi.Avalonia</RepositoryUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageIcon>irihi.png</PackageIcon> <PackageIcon>irihi.png</PackageIcon>
<PackageProjectUrl>https://github.com/irihitech/Semi.Avalonia</PackageProjectUrl> <PackageProjectUrl>https://github.com/irihitech/Semi.Avalonia</PackageProjectUrl>
<AvaloniaVersion>11.2.1</AvaloniaVersion> <AvaloniaVersion>11.3.7</AvaloniaVersion>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault> <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
</PropertyGroup> </PropertyGroup>

View File

@@ -4,7 +4,7 @@
<PropertyGroup> <PropertyGroup>
<Title>Semi.Avalonia.ColorPicker</Title> <Title>Semi.Avalonia.ColorPicker</Title>
<PackageReleaseNotes>Update to Semi.Avalonia.ColorPicker 11.2.1.10</PackageReleaseNotes> <PackageReleaseNotes>Update to Semi.Avalonia.ColorPicker 11.3.7</PackageReleaseNotes>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))"> <PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">

View File

@@ -4,8 +4,8 @@
<TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>11.2.1.10</Version> <Version>11.3.7</Version>
<PackageReleaseNotes>Update to Semi.Avalonia.DataGrid 11.2.1.10</PackageReleaseNotes> <PackageReleaseNotes>Update to Semi.Avalonia.DataGrid 11.3.7</PackageReleaseNotes>
<Authors>IRIHI Technology Co., Ltd.</Authors> <Authors>IRIHI Technology Co., Ltd.</Authors>
<Description>Avalonia Theme inspired by Semi Design.</Description> <Description>Avalonia Theme inspired by Semi Design.</Description>
<RepositoryUrl>https://github.com/irihitech/Semi.Avalonia</RepositoryUrl> <RepositoryUrl>https://github.com/irihitech/Semi.Avalonia</RepositoryUrl>
@@ -20,7 +20,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.2.1"/> <PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.7"/>
<None Include="..\..\irihi.png" Pack="true" PackagePath="\" Link="Properties\irihi.png"/> <None Include="..\..\irihi.png" Pack="true" PackagePath="\" Link="Properties\irihi.png"/>
<None Include="..\..\LICENSE" Pack="true" PackagePath="\" Link="Properties\LICENSE"/> <None Include="..\..\LICENSE" Pack="true" PackagePath="\" Link="Properties\LICENSE"/>
</ItemGroup> </ItemGroup>

View File

@@ -1,7 +1,8 @@
<ResourceDictionary <ResourceDictionary
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls.TreeDataGrid"> xmlns:conv="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls.TreeDataGrid"
x:CompileBindings="True">
<Design.PreviewWith> <Design.PreviewWith>
<StackPanel Margin="20"> <StackPanel Margin="20">
<TreeDataGridColumnHeader Header="123" /> <TreeDataGridColumnHeader Header="123" />

View File

@@ -66,8 +66,14 @@
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
TextTrimming="CharacterEllipsis" TextTrimming="CharacterEllipsis"
Foreground="{TemplateBinding PlaceholderForeground}" Foreground="{TemplateBinding PlaceholderForeground}"
IsVisible="{TemplateBinding SelectionBoxItem,Converter={x:Static ObjectConverters.IsNull}}" Text="{TemplateBinding PlaceholderText}">
Text="{TemplateBinding PlaceholderText}" /> <TextBlock.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<TemplateBinding Property="SelectionBoxItem" Converter="{x:Static ObjectConverters.IsNull}" />
<TemplateBinding Property="IsEditable" Converter="{x:Static BoolConverters.Not}" />
</MultiBinding>
</TextBlock.IsVisible>
</TextBlock>
<ContentPresenter <ContentPresenter
Name="ContentPresenter" Name="ContentPresenter"
Grid.Column="0" Grid.Column="0"
@@ -75,7 +81,20 @@
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectionBoxItem}" Content="{TemplateBinding SelectionBoxItem}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" /> ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
IsVisible="{TemplateBinding IsEditable, Converter={x:Static BoolConverters.Not}}" />
<TextBox
Name="PART_EditableTextBox"
Grid.Column="0"
Theme="{StaticResource LooklessTextBox}"
Padding="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Foreground="{TemplateBinding Foreground}"
Text="{TemplateBinding Text, Mode=TwoWay}"
Watermark="{TemplateBinding PlaceholderText}"
IsVisible="{TemplateBinding IsEditable}" />
<Button <Button
Name="ClearButton" Name="ClearButton"
Grid.Column="1" Grid.Column="1"
@@ -211,6 +230,11 @@
</Style> </Style>
</Style> </Style>
<Style Selector="^[IsEditable=true]">
<Setter Property="IsTabStop" Value="False" />
<Setter Property="KeyboardNavigation.TabNavigation" Value="Local" />
</Style>
<Style Selector="^.Bordered"> <Style Selector="^.Bordered">
<Style Selector="^ /template/ Border#Background"> <Style Selector="^ /template/ Border#Background">
<Setter Property="Background" Value="{DynamicResource ComboBoxSelectorBorderedBackground}" /> <Setter Property="Background" Value="{DynamicResource ComboBoxSelectorBorderedBackground}" />

View File

@@ -1,6 +1,4 @@
<ResourceDictionary <ResourceDictionary xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ControlTheme x:Key="{x:Type SplitView}" TargetType="SplitView"> <ControlTheme x:Key="{x:Type SplitView}" TargetType="SplitView">
<Setter Property="OpenPaneLength" Value="{DynamicResource SplitViewOpenPaneThemeLength}" /> <Setter Property="OpenPaneLength" Value="{DynamicResource SplitViewOpenPaneThemeLength}" />
<Setter Property="CompactPaneLength" Value="{DynamicResource SplitViewCompactPaneThemeLength}" /> <Setter Property="CompactPaneLength" Value="{DynamicResource SplitViewCompactPaneThemeLength}" />
@@ -100,7 +98,7 @@
<Style Selector="^:right"> <Style Selector="^:right">
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate> <ControlTemplate TargetType="SplitView">
<Grid Name="Container" Background="{TemplateBinding Background}"> <Grid Name="Container" Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
@@ -185,79 +183,13 @@
</Style> </Style>
</Style> </Style>
<Style Selector="^:open"> <Style Selector="^:top">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Width"
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions>
</Setter>
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=OpenPaneLength}" />
</Style>
<Style Selector="^ /template/ Rectangle#LightDismissLayer">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Opacity"
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions>
</Setter>
<Setter Property="Opacity" Value="1.0" />
</Style>
</Style>
<Style Selector="^:closed">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Width"
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions>
</Setter>
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^ /template/ Rectangle#LightDismissLayer">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Opacity"
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions>
</Setter>
<Setter Property="Opacity" Value="0.0" />
</Style>
</Style>
<Style Selector="^:lightDismiss /template/ Rectangle#LightDismissLayer">
<Setter Property="Fill" Value="{DynamicResource SplitViewMaskBrush}" />
</Style>
<Style Selector="^:overlay:open /template/ Rectangle#LightDismissLayer">
<Setter Property="IsVisible" Value="True" />
</Style>
<Style Selector="^:compactoverlay:open /template/ Rectangle#LightDismissLayer">
<Setter Property="IsVisible" Value="True" />
</Style>
</ControlTheme>
<ControlTheme x:Key="VerticalSplitView" TargetType="SplitView">
<Setter Property="OpenPaneLength" Value="{DynamicResource SplitViewOpenPaneThemeLength}" />
<Setter Property="CompactPaneLength" Value="{DynamicResource SplitViewCompactPaneThemeLength}" />
<Setter Property="PaneBackground" Value="{DynamicResource SplitViewPaneBackground}" />
<Style Selector="^:left">
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="SplitView"> <ControlTemplate TargetType="SplitView">
<Grid Name="Container" Background="{TemplateBinding Background}"> <Grid Name="Container" Background="{TemplateBinding Background}">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<!-- why is this throwing a binding error? --> <!-- why is this throwing a binding error? -->
<RowDefinition <RowDefinition Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.PaneColumnGridLength}" />
Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.PaneColumnGridLength}" />
<RowDefinition Height="*" /> <RowDefinition Height="*" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
@@ -295,8 +227,7 @@
<Style Selector="^:overlay"> <Style Selector="^:overlay">
<Style Selector="^ /template/ Panel#PART_PaneRoot"> <Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
<Setter Property="Grid.RowSpan" Value="1" /> <Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" /> <Setter Property="Grid.Row" Value="0" />
</Style> </Style>
@@ -310,8 +241,7 @@
<Style Selector="^ /template/ Panel#PART_PaneRoot"> <Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" /> <Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" /> <Setter Property="Grid.Row" Value="0" />
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style> </Style>
<Style Selector="^ /template/ Panel#ContentRoot"> <Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="1" /> <Setter Property="Grid.Row" Value="1" />
@@ -324,8 +254,7 @@
<!-- RowSpan should be 2 --> <!-- RowSpan should be 2 -->
<Setter Property="Grid.RowSpan" Value="1" /> <Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" /> <Setter Property="Grid.Row" Value="0" />
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style> </Style>
<Style Selector="^ /template/ Panel#ContentRoot"> <Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="1" /> <Setter Property="Grid.Row" Value="1" />
@@ -337,8 +266,322 @@
<Style Selector="^ /template/ Panel#PART_PaneRoot"> <Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" /> <Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" /> <Setter Property="Grid.Row" Value="0" />
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" /> </Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Grid.RowSpan" Value="1" />
</Style>
</Style>
</Style>
<Style Selector="^:bottom">
<Setter Property="Template">
<ControlTemplate TargetType="SplitView">
<Grid Name="Container" Background="{TemplateBinding Background}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.PaneColumnGridLength}" />
</Grid.RowDefinitions>
<Panel
Name="PART_PaneRoot"
VerticalAlignment="Bottom"
Background="{TemplateBinding PaneBackground}"
ClipToBounds="True"
ZIndex="100">
<ContentPresenter
Name="PART_PanePresenter"
Content="{TemplateBinding Pane}"
ContentTemplate="{TemplateBinding PaneTemplate}" />
<Rectangle
Name="HCPaneBorder"
Height="1"
VerticalAlignment="Top"
Fill="{DynamicResource SplitViewSeparatorBackground}" />
</Panel>
<Panel Name="ContentRoot">
<ContentPresenter
Name="PART_ContentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
<Rectangle
Name="LightDismissLayer"
Fill="Transparent"
IsVisible="False" />
</Panel>
</Grid>
</ControlTemplate>
</Setter>
<Style Selector="^:overlay">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
<Setter Property="Grid.RowSpan" Value="2" />
<Setter Property="Grid.Row" Value="1" />
</Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Grid.RowSpan" Value="2" />
</Style>
</Style>
<Style Selector="^:compactinline">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Grid.RowSpan" Value="1" />
</Style>
</Style>
<Style Selector="^:compactoverlay">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="2" />
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Grid.RowSpan" Value="1" />
</Style>
</Style>
<Style Selector="^:inline">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Grid.RowSpan" Value="1" />
</Style>
</Style>
</Style>
<Style Selector="^:open">
<Style Selector="^:left /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Width"
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions>
</Setter>
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=OpenPaneLength}" />
</Style>
<Style Selector="^:right /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Width"
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions>
</Setter>
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=OpenPaneLength}" />
</Style>
<Style Selector="^:top /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Height"
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions>
</Setter>
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=OpenPaneLength}" />
</Style>
<Style Selector="^:bottom /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Height"
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions>
</Setter>
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=OpenPaneLength}" />
</Style>
<Style Selector="^ /template/ Rectangle#LightDismissLayer">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Opacity"
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions>
</Setter>
<Setter Property="Opacity" Value="1.0" />
</Style>
</Style>
<Style Selector="^:closed">
<Style Selector="^:left /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Width"
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions>
</Setter>
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^:right /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Width"
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions>
</Setter>
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^:top /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Height"
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions>
</Setter>
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^:bottom /template/ Panel#PART_PaneRoot">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Height"
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions>
</Setter>
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^ /template/ Rectangle#LightDismissLayer">
<Setter Property="Transitions">
<Transitions>
<DoubleTransition
Easing="{StaticResource SplitViewPaneAnimationEasing}"
Property="Opacity"
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions>
</Setter>
<Setter Property="Opacity" Value="0.0" />
</Style>
</Style>
<Style Selector="^:lightDismiss /template/ Rectangle#LightDismissLayer">
<Setter Property="Fill" Value="{DynamicResource SplitViewMaskBrush}" />
</Style>
<Style Selector="^:overlay:open /template/ Rectangle#LightDismissLayer">
<Setter Property="IsVisible" Value="True" />
</Style>
<Style Selector="^:compactoverlay:open /template/ Rectangle#LightDismissLayer">
<Setter Property="IsVisible" Value="True" />
</Style>
</ControlTheme>
<!-- Obsolete after Avalonia 11.3.7 -->
<ControlTheme x:Key="VerticalSplitView" TargetType="SplitView">
<Setter Property="OpenPaneLength" Value="{DynamicResource SplitViewOpenPaneThemeLength}" />
<Setter Property="CompactPaneLength" Value="{DynamicResource SplitViewCompactPaneThemeLength}" />
<Setter Property="PaneBackground" Value="{DynamicResource SplitViewPaneBackground}" />
<Style Selector="^:left">
<Setter Property="Template">
<ControlTemplate TargetType="SplitView">
<Grid Name="Container" Background="{TemplateBinding Background}">
<Grid.RowDefinitions>
<!-- why is this throwing a binding error? -->
<RowDefinition Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.PaneColumnGridLength}" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Panel
Name="PART_PaneRoot"
VerticalAlignment="Top"
Background="{TemplateBinding PaneBackground}"
ClipToBounds="True"
ZIndex="100">
<ContentPresenter
Name="PART_PanePresenter"
Content="{TemplateBinding Pane}"
ContentTemplate="{TemplateBinding PaneTemplate}" />
<Rectangle
Name="HCPaneBorder"
Height="1"
VerticalAlignment="Bottom"
Fill="{DynamicResource SplitViewSeparatorBackground}" />
</Panel>
<Panel Name="ContentRoot">
<ContentPresenter
Name="PART_ContentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
<Rectangle
Name="LightDismissLayer"
Fill="Transparent"
IsVisible="False" />
</Panel>
</Grid>
</ControlTemplate>
</Setter>
<Style Selector="^:overlay">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
<Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" />
</Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Grid.RowSpan" Value="2" />
</Style>
</Style>
<Style Selector="^:compactinline">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Grid.RowSpan" Value="1" />
</Style>
</Style>
<Style Selector="^:compactoverlay">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<!-- RowSpan should be 2 -->
<Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style>
<Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Grid.RowSpan" Value="1" />
</Style>
</Style>
<Style Selector="^:inline">
<Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style> </Style>
<Style Selector="^ /template/ Panel#ContentRoot"> <Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="1" /> <Setter Property="Grid.Row" Value="1" />
@@ -353,8 +596,7 @@
<Grid Name="Container" Background="{TemplateBinding Background}"> <Grid Name="Container" Background="{TemplateBinding Background}">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="*" /> <RowDefinition Height="*" />
<RowDefinition <RowDefinition Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.PaneColumnGridLength}" />
Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.PaneColumnGridLength}" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Panel <Panel
@@ -388,8 +630,7 @@
<Style Selector="^:overlay"> <Style Selector="^:overlay">
<Style Selector="^ /template/ Panel#PART_PaneRoot"> <Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
<Setter Property="Grid.RowSpan" Value="2" /> <Setter Property="Grid.RowSpan" Value="2" />
<Setter Property="Grid.Row" Value="1" /> <Setter Property="Grid.Row" Value="1" />
</Style> </Style>
@@ -403,8 +644,7 @@
<Style Selector="^ /template/ Panel#PART_PaneRoot"> <Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" /> <Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="1" /> <Setter Property="Grid.Row" Value="1" />
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style> </Style>
<Style Selector="^ /template/ Panel#ContentRoot"> <Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="0" /> <Setter Property="Grid.Row" Value="0" />
@@ -416,8 +656,7 @@
<Style Selector="^ /template/ Panel#PART_PaneRoot"> <Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="2" /> <Setter Property="Grid.RowSpan" Value="2" />
<Setter Property="Grid.Row" Value="1" /> <Setter Property="Grid.Row" Value="1" />
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style> </Style>
<Style Selector="^ /template/ Panel#ContentRoot"> <Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="0" /> <Setter Property="Grid.Row" Value="0" />
@@ -429,8 +668,7 @@
<Style Selector="^ /template/ Panel#PART_PaneRoot"> <Style Selector="^ /template/ Panel#PART_PaneRoot">
<Setter Property="Grid.RowSpan" Value="1" /> <Setter Property="Grid.RowSpan" Value="1" />
<Setter Property="Grid.Row" Value="1" /> <Setter Property="Grid.Row" Value="1" />
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style> </Style>
<Style Selector="^ /template/ Panel#ContentRoot"> <Style Selector="^ /template/ Panel#ContentRoot">
<Setter Property="Grid.Row" Value="0" /> <Setter Property="Grid.Row" Value="0" />
@@ -449,8 +687,7 @@
Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" /> Duration="{StaticResource SplitViewPaneAnimationOpenDuration}" />
</Transitions> </Transitions>
</Setter> </Setter>
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=OpenPaneLength}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=OpenPaneLength}" />
</Style> </Style>
<Style Selector="^ /template/ Rectangle#LightDismissLayer"> <Style Selector="^ /template/ Rectangle#LightDismissLayer">
<Setter Property="Transitions"> <Setter Property="Transitions">
@@ -475,8 +712,7 @@
Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" /> Duration="{StaticResource SplitViewPaneAnimationCloseDuration}" />
</Transitions> </Transitions>
</Setter> </Setter>
<Setter Property="Height" <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ClosedPaneWidth}" />
</Style> </Style>
<Style Selector="^ /template/ Rectangle#LightDismissLayer"> <Style Selector="^ /template/ Rectangle#LightDismissLayer">
<Setter Property="Transitions"> <Setter Property="Transitions">

View File

@@ -491,6 +491,7 @@
<Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="FocusAdorner" Value="{x:Null}" /> <Setter Property="FocusAdorner" Value="{x:Null}" />
<Setter Property="ScrollViewer.IsScrollChainingEnabled" Value="True" /> <Setter Property="ScrollViewer.IsScrollChainingEnabled" Value="True" />
<Setter Property="ContextFlyout" Value="{StaticResource DefaultTextBoxContextFlyout}" />
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="TextBox"> <ControlTemplate TargetType="TextBox">
<Border Name="PART_ContentPresenterBorder" MinHeight="{TemplateBinding MinHeight}"> <Border Name="PART_ContentPresenterBorder" MinHeight="{TemplateBinding MinHeight}">

View File

@@ -4,7 +4,7 @@
<PropertyGroup> <PropertyGroup>
<Title>Semi.Avalonia</Title> <Title>Semi.Avalonia</Title>
<PackageReleaseNotes>Update to Semi.Avalonia 11.2.1.10</PackageReleaseNotes> <PackageReleaseNotes>Update to Semi.Avalonia 11.3.7</PackageReleaseNotes>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))"> <PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">

View File

@@ -35,11 +35,6 @@ public class SemiTheme : Styles
private CultureInfo? _locale; private CultureInfo? _locale;
public SemiTheme(IServiceProvider? provider = null)
{
AvaloniaXamlLoader.Load(provider, this);
}
public static ThemeVariant Aquatic => new(nameof(Aquatic), ThemeVariant.Dark); public static ThemeVariant Aquatic => new(nameof(Aquatic), ThemeVariant.Dark);
public static ThemeVariant Desert => new(nameof(Desert), ThemeVariant.Light); public static ThemeVariant Desert => new(nameof(Desert), ThemeVariant.Light);
public static ThemeVariant Dusk => new(nameof(Dusk), ThemeVariant.Dark); public static ThemeVariant Dusk => new(nameof(Dusk), ThemeVariant.Dark);