Compare commits

..

7 Commits

Author SHA1 Message Date
rabbitism
a024d2ca0e chore: fix datagrid version and bump package version 2026-04-18 16:49:25 +08:00
Copilot
18dec50bb5 Bump Avalonia version to 12.0.1 (#805)
Agent-Logs-Url: https://github.com/irihitech/Semi.Avalonia/sessions/ccdc8843-c9ae-4277-89e1-f25308ba3eaf

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com>
2026-04-18 16:44:43 +08:00
Zhang Dian
6eb871581c misc: replace QR code of community-support. 2026-04-17 12:57:11 +08:00
Zhang Dian
3807090a4b misc: follow .editorconfig from Avalonia. (#798)
* misc: follow .editorconfig from Avalonia.

* fix: remove Avalonia DevAnalyzer preferences.
2026-04-16 17:37:22 +08:00
Zhang Dian
89cdae2d39 Update AutoCompleteBox bindings and clean up project files (#802)
* fix: update ValueMemberBinding syntax for AutoCompleteBox components.

* chore: remove AvaloniaUseCompiledBindingsByDefault property from project files.

* ci: upgrade draft release version.
2026-04-15 17:01:28 +08:00
Zhang Dian
555ecf16d9 Add icons to TabbedPage content and improve layout. (#801)
* fix: add icons to TabbedPage content and improve layout.

* fix: only update Placement=Top/Bottom in TabbedPage.
2026-04-13 22:46:53 +08:00
Zhang Dian
49ee1c12cc fix: fix workflow_call secrets issue. 2026-04-10 14:56:12 +08:00
19 changed files with 107 additions and 68 deletions

View File

@@ -6,7 +6,7 @@ on:
Version_Prefix:
description: 'Version Prefix'
required: true
default: '11.2.999'
default: '12.0.999'
type: string
Semi_Avalonia:
description: 'Pack Semi.Avalonia'

View File

@@ -40,6 +40,7 @@ on:
Semi_Avalonia_TreeDataGrid:
type: boolean
default: true
secrets: {}
jobs:
Pack_to_NuGet:

View File

@@ -33,6 +33,7 @@ jobs:
Semi_Avalonia_ColorPicker: ${{ inputs.Semi_Avalonia_ColorPicker }}
Semi_Avalonia_DataGrid: ${{ inputs.Semi_Avalonia_DataGrid }}
Semi_Avalonia_TreeDataGrid: ${{ inputs.Semi_Avalonia_TreeDataGrid }}
secrets: inherit
publish:
uses: ./.github/workflows/publish.yml
@@ -62,7 +63,7 @@ jobs:
run: ls -R
- name: Release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
with:
generate_release_notes: true

View File

@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<AvaloniaVersion>12.0.0</AvaloniaVersion>
<AvaloniaVersion>12.0.1</AvaloniaVersion>
<DataGridVersion>12.0.0</DataGridVersion>
<SkiaSharpVersion>3.119.3-preview.1.1</SkiaSharpVersion>
</PropertyGroup>
@@ -23,4 +23,4 @@
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.2"/>
</ItemGroup>
</Project>
</Project>

View File

@@ -1,28 +0,0 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using Avalonia;
using Avalonia.Data.Converters;
using Avalonia.Metadata;
namespace Semi.Avalonia.Demo.Converters;
public class FileIconConverter : IMultiValueConverter
{
[Content] public IDictionary<string, object?> Items { get; } = new Dictionary<string, object?>();
public object? Convert(IList<object?> values, Type targetType, object? parameter, CultureInfo culture)
{
if (values[0] is bool isDirectory && values[1] is bool isOpen)
{
if (!isDirectory)
{
return Items["file"];
}
return isOpen ? Items["folderOpen"] : Items["folderClosed"];
}
return AvaloniaProperty.UnsetValue;
}
}

View File

@@ -29,40 +29,40 @@
<AutoCompleteBox
PlaceholderText="Please select a State"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
Classes="Large"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
Classes="Small"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
Classes="Bordered"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
IsEnabled="False"
PlaceholderText="Disabled"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
InnerLeftContent="https://"
InnerRightContent=".com"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<StackPanel Orientation="Horizontal">
<AutoCompleteBox
Width="100"
Classes="Large"
PlaceholderText="Large"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
Width="100"
PlaceholderText="Default"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
Width="100"
Classes="Small"
PlaceholderText="Small"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
@@ -70,17 +70,17 @@
Width="100"
IsEnabled="False"
PlaceholderText="Disabled"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
Width="100"
Classes="Bordered"
PlaceholderText="Bordered"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
<AutoCompleteBox
Width="100"
Classes="Bordered"
IsEnabled="False"
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
</StackPanel>
</StackPanel>

View File

@@ -50,7 +50,7 @@
<TabbedPage Name="DemoTabs"
TabPlacement="Top"
SelectionChanged="OnSelectionChanged">
<ContentPage Header="Home">
<ContentPage Icon="{DynamicResource SemiIconHome}" Header="Home">
<StackPanel Margin="16" Spacing="8">
<TextBlock Text="Home Tab" FontSize="24" FontWeight="Bold" />
<TextBlock Text="Welcome to the Home tab. This is a TabbedPage sample."
@@ -59,14 +59,14 @@
TextWrapping="Wrap" Opacity="0.7" />
</StackPanel>
</ContentPage>
<ContentPage Header="Search">
<ContentPage Icon="{DynamicResource SemiIconSearch}" Header="Search">
<StackPanel Margin="16" Spacing="8">
<TextBlock Text="Search Tab" FontSize="24" FontWeight="Bold" />
<TextBox PlaceholderText="Type to search..." />
<TextBlock Text="Search results will appear here." Opacity="0.7" />
</StackPanel>
</ContentPage>
<ContentPage Header="Settings">
<ContentPage Icon="{DynamicResource SemiIconSetting}" Header="Settings">
<StackPanel Margin="16" Spacing="8">
<TextBlock Text="Settings Tab" FontSize="24" FontWeight="Bold" />
<CheckBox Content="Enable notifications" />

View File

@@ -3,8 +3,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Semi.Avalonia.Demo.Pages.WindowCustomizationsPage"
x:CompileBindings="True">
x:Class="Semi.Avalonia.Demo.Pages.WindowCustomizationsPage">
<StackPanel
Spacing="10"

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

@@ -2,7 +2,6 @@
<PropertyGroup>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">

View File

@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<AvaloniaVersion>12.0.0</AvaloniaVersion>
<AvaloniaVersion>12.0.1</AvaloniaVersion>
<DataGridVersion>12.0.0</DataGridVersion>
</PropertyGroup>
<ItemGroup>
@@ -11,4 +11,4 @@
<PackageVersion Include="Avalonia.Controls.TreeDataGrid" Version="11.1.1"/>
<PackageVersion Include="Irihi.Avalonia.Shared" Version="0.4.0"/>
</ItemGroup>
</Project>
</Project>

View File

@@ -2,8 +2,8 @@
<PropertyGroup>
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
<Version>12.0.0</Version>
<PackageReleaseNotes>Update to Semi.Avalonia.ColorPicker 12.0.0</PackageReleaseNotes>
<Version>12.0.1</Version>
<PackageReleaseNotes>Update to Semi.Avalonia.ColorPicker 12.0.1</PackageReleaseNotes>
<Title>Semi.Avalonia.ColorPicker</Title>
</PropertyGroup>

View File

@@ -1,8 +1,7 @@
<ResourceDictionary
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:collections="using:Avalonia.Collections"
x:CompileBindings="True">
xmlns:collections="using:Avalonia.Collections">
<ControlTheme x:Key="DataGridCellTextBlockTheme" TargetType="TextBlock">
<Setter Property="Margin" Value="{DynamicResource DataGridCellTextBlockDefaultMargin}" />
<Setter Property="VerticalAlignment" Value="Center" />

View File

@@ -1,8 +1,7 @@
<ResourceDictionary
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"
x:CompileBindings="True">
xmlns:conv="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls.TreeDataGrid">
<Design.PreviewWith>
<StackPanel Margin="20">
<TreeDataGridColumnHeader Header="123" />

View File

@@ -1,7 +1,6 @@
<ResourceDictionary
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:CompileBindings="True">
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ControlTheme x:Key="{x:Type SplitView}" TargetType="SplitView">
<Setter Property="OpenPaneLength" Value="{DynamicResource SplitViewOpenPaneThemeLength}" />
<Setter Property="CompactPaneLength" Value="{DynamicResource SplitViewCompactPaneThemeLength}" />

View File

@@ -31,7 +31,6 @@
<DockPanel HorizontalSpacing="{DynamicResource TabItemIconHeaderSpacing}">
<ContentPresenter
Name="PART_IconPresenter"
DockPanel.Dock="Left"
Content="{TemplateBinding Icon}"
ContentTemplate="{TemplateBinding IconTemplate}"
IsVisible="{Binding $self.Content, Converter={x:Static ObjectConverters.IsNotNull}}">
@@ -61,6 +60,10 @@
<Setter Property="RecognizesAccessKey" Value="True" />
</Style>
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
<Setter Property="DockPanel.Dock" Value="Left" />
</Style>
<Style Selector="^:selected">
<Style Selector="^ /template/ ContentPresenter#PART_HeaderPresenter">
<Setter Property="FontWeight" Value="{DynamicResource TabItemSelectedFontWeight}" />

View File

@@ -2,7 +2,11 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Design.PreviewWith>
<TabbedPage Width="400" Height="300" />
<TabbedPage Width="400" Height="800" TabPlacement="Bottom">
<ContentPage Icon="{DynamicResource SemiIconHome}" Header="Home" />
<ContentPage Icon="{DynamicResource SemiIconSearch}" Header="Search" />
<ContentPage Icon="{DynamicResource SemiIconSetting}" Header="Settings" />
</TabbedPage>
</Design.PreviewWith>
<ControlTheme x:Key="{x:Type TabbedPage}" TargetType="TabbedPage">
@@ -11,27 +15,91 @@
<TabControl
Name="PART_TabControl"
Background="{TemplateBinding Background}"
Theme="{StaticResource LineTabControl}" />
Theme="{StaticResource LineTabControl}">
<TabControl.ItemContainerTheme>
<ControlTheme
BasedOn="{StaticResource LineTabItem}"
TargetType="TabItem">
<Style Selector="^[TabStripPlacement=Top], ^[TabStripPlacement=Bottom]">
<Setter Property="TabItem.Margin" Value="0" />
<Setter Property="TabItem.HorizontalContentAlignment" Value="Center" />
<Setter Property="TabItem.VerticalContentAlignment" Value="Center" />
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
<Setter Property="DockPanel.Dock" Value="Top" />
</Style>
</Style>
</ControlTheme>
</TabControl.ItemContainerTheme>
<TabControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding $parent[TabControl].ItemCount}" />
</ItemsPanelTemplate>
</TabControl.ItemsPanel>
</TabControl>
</ControlTemplate>
</Setter>
</ControlTheme>
<ControlTheme x:Key="CardTabbedPage" TargetType="TabbedPage">
<Setter Property="Template">
<ControlTemplate TargetType="TabbedPage">
<TabControl
Name="PART_TabControl"
Background="{TemplateBinding Background}"
Theme="{StaticResource CardTabControl}" />
Theme="{StaticResource CardTabControl}">
<TabControl.ItemContainerTheme>
<ControlTheme
BasedOn="{StaticResource CardTabItem}"
TargetType="TabItem">
<Style Selector="^[TabStripPlacement=Top], ^[TabStripPlacement=Bottom]">
<Setter Property="TabItem.Padding" Value="8" />
<Setter Property="TabItem.Margin" Value="0" />
<Setter Property="TabItem.HorizontalContentAlignment" Value="Center" />
<Setter Property="TabItem.VerticalContentAlignment" Value="Center" />
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
<Setter Property="DockPanel.Dock" Value="Top" />
</Style>
</Style>
</ControlTheme>
</TabControl.ItemContainerTheme>
<TabControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding $parent[TabControl].ItemCount}" />
</ItemsPanelTemplate>
</TabControl.ItemsPanel>
</TabControl>
</ControlTemplate>
</Setter>
</ControlTheme>
<ControlTheme x:Key="ButtonTabbedPage" TargetType="TabbedPage">
<Setter Property="Template">
<ControlTemplate TargetType="TabbedPage">
<TabControl
Name="PART_TabControl"
Background="{TemplateBinding Background}"
Theme="{StaticResource ButtonTabControl}" />
Theme="{StaticResource ButtonTabControl}">
<TabControl.ItemContainerTheme>
<ControlTheme
BasedOn="{StaticResource ButtonTabItem}"
TargetType="TabItem">
<Style Selector="^[TabStripPlacement=Top], ^[TabStripPlacement=Bottom]">
<Setter Property="TabItem.Padding" Value="12" />
<Setter Property="TabItem.Margin" Value="0" />
<Setter Property="TabItem.HorizontalContentAlignment" Value="Center" />
<Setter Property="TabItem.VerticalContentAlignment" Value="Center" />
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
<Setter Property="DockPanel.Dock" Value="Top" />
</Style>
</Style>
</ControlTheme>
</TabControl.ItemContainerTheme>
<TabControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding $parent[TabControl].ItemCount}" />
</ItemsPanelTemplate>
</TabControl.ItemsPanel>
</TabControl>
</ControlTemplate>
</Setter>
</ControlTheme>

View File

@@ -2,8 +2,8 @@
<PropertyGroup>
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
<Version>12.0.0</Version>
<PackageReleaseNotes>Update to Semi.Avalonia 12.0.0</PackageReleaseNotes>
<Version>12.0.1</Version>
<PackageReleaseNotes>Update to Semi.Avalonia 12.0.1</PackageReleaseNotes>
<Title>Semi.Avalonia</Title>
</PropertyGroup>