SuncodeSoftware.SuperSDK.UI 5.0.3

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package SuncodeSoftware.SuperSDK.UI --version 5.0.3
                    
NuGet\Install-Package SuncodeSoftware.SuperSDK.UI -Version 5.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SuncodeSoftware.SuperSDK.UI" Version="5.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SuncodeSoftware.SuperSDK.UI" Version="5.0.3" />
                    
Directory.Packages.props
<PackageReference Include="SuncodeSoftware.SuperSDK.UI" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SuncodeSoftware.SuperSDK.UI --version 5.0.3
                    
#r "nuget: SuncodeSoftware.SuperSDK.UI, 5.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SuncodeSoftware.SuperSDK.UI@5.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SuncodeSoftware.SuperSDK.UI&version=5.0.3
                    
Install as a Cake Addin
#tool nuget:?package=SuncodeSoftware.SuperSDK.UI&version=5.0.3
                    
Install as a Cake Tool

SuperSDK.UI

Avalonia UI 通用组件库,提供统一风格的 UI 组件和工具。

🎯 核心功能

1. 窗口组件

  • GzTitleBarCtrl - 统一风格的自定义标题栏(必须使用)
  • GzAboutView - 关于窗口
  • GzLoggerView - 日志查看器
  • GzSqlDebugView - SQL 调试工具

2. 自定义按钮组件(支持主题切换)

所有按钮默认 Auto 模式,自动跟随全局主题切换(Dark/Light)

  • GzConfirmButton - 确认按钮(对勾图标,绿色)
  • GzSaveButton - 保存按钮(对勾图标,绿色)
  • GzDeleteButton - 删除按钮(X 图标,红色)
  • GzCancelButton - 取消按钮(撤销箭头图标,橙色)
  • GzAddButton - 添加按钮(加号图标,绿色)
  • GzEditButton - 编辑按钮(笔图标,橙色)
  • GzOpenFolderButton - 打开文件夹按钮(文件夹图标,橙黄色)
  • GzFilterButton - 过滤按钮(漏斗图标,青色)
  • GzGenerateButton - 生成按钮(闪电图标,粉色)
  • GzLoadButton - 加载/下载按钮(下箭头图标,蓝色)
  • GzRefreshButton - 刷新按钮(循环箭头图标,蓝色)
  • GzRunButton - 运行按钮(播放图标,绿色)
  • GzPreviewButton - 预览按钮(眼睛图标,紫色)
  • GzSettingsButton - 设置按钮(齿轮图标,灰色)
  • GzMoveUpButton - 上移按钮(向上箭头图标,蓝色)
  • GzMoveDownButton - 下移按钮(向下箭头图标,蓝色)
  • GzMoveLeftButton - 左移按钮(向左箭头图标,蓝色)
  • GzMoveRightButton - 右移按钮(向右箭头图标,蓝色)
  • GzSetDataButton - 设置数据按钮(列表图标,蓝色)
  • GzSetHeaderButton - 设置表头按钮(文档表头图标,蓝色)
  • GzSelectAllButton - 全选按钮(勾选框图标,蓝色)
  • GzDeselectAllButton - 全不选按钮(空框图标,蓝色)
🎨 按钮色系统计表

所有按钮均支持 Dark/Light 主题自动切换,以下是各按钮使用的颜色(适用于自定义控件开发):

色系 按钮 Dark 模式 Light 模式 用途
🟢 绿色系 成功/确认/添加
GzConfirmButton #52C176#6DD494 #66D68A#80E8A0 确认按钮
GzSaveButton #52C176#6DD494 #66D68A#80E8A0 保存按钮
GzAddButton #52C176#6DD494 #66D68A#80E8A0 添加按钮
GzRunButton #52C176#6DD494 #66D68A#80E8A0 运行按钮
🔴 红色系 删除/危险
GzDeleteButton #E57373#EF8E8E #FF8A80#FFA8A0 删除按钮
🟠 橙色系 编辑/取消
GzCancelButton #FF9800#FFB74D #FFB74D#FFCC80 取消按钮
GzEditButton #FF9F5C#FFB380 #FFB380#FFC799 编辑按钮
🟡 橙黄色系 打开文件
GzOpenFolderButton #FFB84D#FFC870 #FFC870#FFD88F 打开文件夹
🔵 蓝色系 数据操作/导航
GzRefreshButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 刷新按钮
GzLoadButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 加载按钮
GzMoveUpButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 上移按钮
GzMoveDownButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 下移按钮
GzMoveLeftButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 左移按钮
GzMoveRightButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 右移按钮
GzSetDataButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 设置数据
GzSetHeaderButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 设置表头
GzSelectAllButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 全选按钮
GzDeselectAllButton #5B9BD5#75B3E8 #75B3E8#8FC5F0 全不选按钮
🔷 青色系 过滤/筛选
GzFilterButton #4DB6AC#70C7BF #70C7BF#8DD8D2 过滤按钮
🩷 粉色系 生成/创建
GzGenerateButton #EC407A#F06292 #F06292#F48FB1 生成按钮
🟣 紫色系 预览/查看
GzPreviewButton #8B7EC8#A297DC #A297DC#B9AFEA 预览按钮
⚪ 灰色系 设置/配置
GzSettingsButton #78909C#90A4AE #90A4AE#B0BEC5 设置按钮

色系使用建议:

  • 绿色 - 表示成功、确认、添加等正向操作
  • 红色 - 表示删除、危险、错误等警示操作
  • 橙色 - 表示编辑、取消、警告等中性操作
  • 蓝色 - 表示数据操作、导航、信息展示等常规操作
  • 紫色 - 表示预览、查看等非修改操作
  • 灰色 - 表示设置、配置等系统功能

3. 进度条组件

  • GzProgressBar - 带渐变效果的进度条,支持主题切换(Dark/Light/Auto)

3. MVVM 基础

  • ViewModelBase - ReactiveUI 基类,集成 MessageBus 自动清理

4. 主题管理

  • ThemeManager - 全局主题管理器,支持 Dark/Light 模式切换
  • UITheme - 主题枚举(Dark/Light/Auto)

5. 通知与对话框

  • GzNotification - 轻量级通知(右上角弹窗)
  • UIHelper - 模态对话框(错误/警告/信息)

6. 工具类

  • UIThreadHelper - UI 线程调度

📐 UI 风格规范

✅ 必须遵守的规范

1. 使用 GzTitleBarCtrl 作为标题栏
<Window SystemDecorations="None"
        Background="Transparent"
        TransparencyLevelHint="Transparent">
    <Border Background="{DynamicResource SemiColorBackground1}" 
            CornerRadius="6"
            BorderBrush="{DynamicResource SemiColorBorder}"
            BorderThickness="1">
        <Grid RowDefinitions="Auto,*">
            <views:GzTitleBarCtrl Grid.Row="0"
                                  Title="我的窗口"
                                  IsMaxEnabled="True"
                                  IsMinEnabled="True"/>
            <ContentControl Grid.Row="1" Content="{Binding}" />
        </Grid>
    </Border>
</Window>
2. 使用 DynamicResource 适配主题

❌ 错误示例(硬编码颜色):

<Border Background="#1e1e1e" BorderBrush="#3f3f46">
    <TextBlock Foreground="#FFFFFF" Text="标题" />
</Border>

✅ 正确示例(使用 DynamicResource):

<Border Background="{DynamicResource SemiColorBackground1}" 
        BorderBrush="{DynamicResource SemiColorBorder}">
    <TextBlock Foreground="{DynamicResource SemiColorText0}" Text="标题" />
</Border>

🎨 Semi.Avalonia 主题资源

资源名称 用途 示例
背景色
SemiColorBackground0 最深背景(工具栏) #2b2b2b (Dark)
SemiColorBackground1 主背景(窗口) #1e1e1e (Dark)
SemiColorBackground2 次级背景(面板) #252526 (Dark)
SemiColorBackground3 三级背景(卡片) #18181B (Dark)
SemiColorBackground4 最浅背景 #27272A (Dark)
文字色
SemiColorText0 主要文字 #FFFFFF (Dark)
SemiColorText1 次要文字 #CCCCCC (Dark)
SemiColorText2 辅助文字 #808080 (Dark)
SemiColorText3 禁用文字 #666666 (Dark)
边框色
SemiColorBorder 普通边框 #3f3f46 (Dark)
SemiColorFocusBorder 焦点边框 #007ACC (Dark)
填充色
SemiColorFill0 Hover 背景 半透明
SemiColorFill1 次级填充 半透明
SemiColorFill2 三级填充 半透明
语义色
SemiColorPrimary 主题色(蓝) #007ACC
SemiColorSuccess 成功(绿) #28a745
SemiColorDanger 危险(红) #E81123
SemiColorWarning 警告(黄) #FFA500
SemiColorInformation 信息(蓝) #0064fa

🖱️ 交互样式示例

ListBox Hover 和 Selected:

<ListBox.Styles>
    <Style Selector="ListBoxItem:pointerover /template/ ContentPresenter">
        <Setter Property="Background" Value="{DynamicResource SemiColorFill0}"/>
    </Style>
    <Style Selector="ListBoxItem:selected /template/ ContentPresenter">
        <Setter Property="Background" Value="{DynamicResource SemiColorPrimary}"/>
    </Style>
</ListBox.Styles>

🚀 组件使用

1. 主题管理

切换主题

在 SuperApp 中切换主题:

// 切换主题(Dark ↔ Light)
SuperApp.ToggleTheme();

// 获取当前主题
var currentTheme = ThemeManager.CurrentTheme; // Dark 或 Light

手动设置主题:

// 设置为深色主题
ThemeManager.CurrentTheme = UITheme.Dark;

// 设置为浅色主题
ThemeManager.CurrentTheme = UITheme.Light;
获取主题颜色(兼容 ThemeManager)

使用 GetAvaloniaDynamicColor 方法:

如果你的组件需要在 C# 代码中根据当前主题获取颜色,使用 ThemeManager.GetAvaloniaDynamicColor() 方法:

using SuperSDK.UI;
using Avalonia.Media;

// 获取当前主题的文字颜色
var textColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorText0");
if (textColor.HasValue)
{
    var brush = new SolidColorBrush(textColor.Value);
    myTextBlock.Foreground = brush;
}

// 获取背景色
var bgColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBackground1");
if (bgColor.HasValue)
{
    myBorder.Background = new SolidColorBrush(bgColor.Value);
}

// 获取边框色
var borderColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBorder");

// 获取语义色
var primaryColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorPrimary");
var successColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorSuccess");
var dangerColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorDanger");

支持的颜色资源键:

资源键 说明 Dark 模式 Light 模式
SemiColorBackground0 最深背景 #16161A White
SemiColorBackground1 主背景 #232429 White
SemiColorBackground2 次级背景 #35363C White
SemiColorBackground3 三级背景 #43444A White
SemiColorBackground4 最浅背景 #4F5159 White
SemiColorText0 主要文字 #F9F9F9 #1C1F23
SemiColorText1 次要文字 (80%) #F9F9F9 @ 0.8 #1C1F23 @ 0.8
SemiColorText2 辅助文字 (60%) #F9F9F9 @ 0.6 #1C1F23 @ 0.62
SemiColorText3 禁用文字 (35%) #F9F9F9 @ 0.35 #1C1F23 @ 0.35
SemiColorBorder 普通边框 白色 @ 0.08 #1C1F23 @ 0.08
SemiColorFocusBorder 焦点边框 #54A9FF #0064FA
SemiColorFill0 Hover 背景 (12%) 白色 @ 0.12 #2E3238 @ 0.05
SemiColorFill1 次级填充 (16%) 白色 @ 0.16 #2E3238 @ 0.09
SemiColorFill2 三级填充 (20%) 白色 @ 0.20 #2E3238 @ 0.13
SemiColorPrimary 主题色 #54A9FF #0064FA
SemiColorSuccess 成功色 #5DC264 #3BB346
SemiColorWarning 警告色 #FFAE43 #FC8800
SemiColorDanger 危险色 #FC725A #F93920
SemiColorInformation 信息色 #54A9FF #0064FA

响应主题变更:

// 订阅主题变更事件
ThemeManager.ThemeChanged += OnThemeChanged;

private void OnThemeChanged(object? sender, UITheme newTheme)
{
    // 主题变更时更新颜色
    var textColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorText0");
    if (textColor.HasValue)
    {
        myTextBlock.Foreground = new SolidColorBrush(textColor.Value);
    }
}

// 取消订阅(避免内存泄漏)
protected override void OnUnloaded(RoutedEventArgs e)
{
    ThemeManager.ThemeChanged -= OnThemeChanged;
}

实用示例:创建主题感知的自定义控件

public class MyCustomControl : UserControl
{
    private Border _border;
    private TextBlock _textBlock;

    public MyCustomControl()
    {
        _border = new Border();
        _textBlock = new TextBlock { Text = "Hello" };
        _border.Child = _textBlock;
        Content = _border;

        // 初始化颜色
        UpdateColors();

        // 订阅主题变更
        ThemeManager.ThemeChanged += (s, e) => UpdateColors();
    }

    private void UpdateColors()
    {
        // 根据当前主题更新颜色
        var bgColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBackground1");
        var textColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorText0");
        var borderColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBorder");

        if (bgColor.HasValue)
            _border.Background = new SolidColorBrush(bgColor.Value);
        
        if (textColor.HasValue)
            _textBlock.Foreground = new SolidColorBrush(textColor.Value);
        
        if (borderColor.HasValue)
        {
            _border.BorderBrush = new SolidColorBrush(borderColor.Value);
            _border.BorderThickness = new Thickness(1);
        }
    }
}

2. 自定义按钮

基础使用(自动跟随主题):

<Window xmlns:controls="clr-namespace:SuperSDK.UI.Controls;assembly=SuperSDK.UI">
    <StackPanel Spacing="10" Orientation="Horizontal">
        
        <controls:GzConfirmButton Command="{Binding ConfirmCommand}"/>
        
        
        <controls:GzSaveButton Command="{Binding SaveCommand}"/>
        
        
        <controls:GzDeleteButton Command="{Binding DeleteCommand}"/>
        
        
        <controls:GzAddButton Command="{Binding AddCommand}"/>
        
        
        <controls:GzEditButton Command="{Binding EditCommand}"/>
        
        
        <controls:GzRefreshButton Command="{Binding RefreshCommand}"/>
        
        
        <controls:GzRunButton Command="{Binding RunCommand}"/>
        
        
        <controls:GzPreviewButton Command="{Binding PreviewCommand}"/>
        
        
        <controls:GzOpenFolderButton Command="{Binding OpenFolderCommand}"/>
        
        
        <controls:GzFilterButton Command="{Binding FilterCommand}"/>
        
        
        <controls:GzGenerateButton Command="{Binding GenerateCommand}"/>
        
        
        <controls:GzLoadButton Command="{Binding LoadCommand}"/>
        
        
        <controls:GzSettingsButton Command="{Binding SettingsCommand}"/>
        
        
        <controls:GzMoveUpButton Command="{Binding MoveUpCommand}"/>
        
        
        <controls:GzMoveDownButton Command="{Binding MoveDownCommand}"/>
        
        
        <controls:GzMoveLeftButton Command="{Binding MoveLeftCommand}"/>
        
        
        <controls:GzMoveRightButton Command="{Binding MoveRightCommand}"/>
        
        
        <controls:GzSetDataButton Command="{Binding SetDataCommand}"/>
        
        
        <controls:GzSetHeaderButton Command="{Binding SetHeaderCommand}"/>
    </StackPanel>
</Window>

自定义按钮大小:


<controls:GzSaveButton />


<controls:GzSaveButton ButtonSize="24"/>


<controls:GzEditButton ButtonSize="32"/>


<controls:GzRefreshButton ButtonSize="56"/>

固定按钮主题(不跟随全局主题):


<controls:GzSaveButton BtnTheme="Dark"/>


<controls:GzDeleteButton BtnTheme="Light"/>


<controls:GzAddButton BtnTheme="Auto"/>

3. 进度条 (GzProgressBar)

基础使用(自动跟随主题):

<controls:GzProgressBar Value="65" 
                       Maximum="100"
                       Text="正在加载..."
                       BarHeight="28"/>

完整属性示例:

<controls:GzProgressBar Value="{Binding CurrentValue}" 
                       Maximum="100"
                       Text="{Binding StatusText}"
                       ShowPercentage="True"
                       BarHeight="32"
                       BarCornerRadius="16"
                       BarTheme="Auto"/>

固定进度条主题:


<controls:GzProgressBar Value="50" 
                       Maximum="100"
                       BarTheme="Dark"
                       Text="深色进度条"/>


<controls:GzProgressBar Value="75" 
                       Maximum="100"
                       BarTheme="Light"
                       Text="浅色进度条"/>


<controls:GzProgressBar Value="30" 
                       Maximum="100"
                       BarTheme="Auto"
                       Text="自动跟随主题"/>

自定义颜色:

<controls:GzProgressBar Value="60" 
                       Maximum="100"
                       BackgroundColor="#2A2A2A"
                       ProgressColor="#52C176"
                       BarBorderBrush="#404040"
                       BarBorderThickness="1"
                       BarHeight="24"/>

属性说明: | 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | Value | double | 0.0 | 当前进度值 | | Maximum | double | 100.0 | 最大值 | | Text | string | "" | 进度条下方描述文字 | | ShowPercentage | bool | true | 是否显示百分比 | | BarHeight | double | 24.0 | 进度条高度 | | BarCornerRadius | CornerRadius | 12.0 | 圆角半径 | | BarTheme | ProgressBarTheme | Auto | 主题模式(Dark/Light/Auto)| | BackgroundColor | IBrush? | null | 自定义背景色(覆盖主题)| | ProgressColor | IBrush? | null | 自定义进度色(覆盖主题)| | BarBorderBrush | IBrush? | null | 自定义边框色 | | BarBorderThickness | Thickness | 0 | 边框粗细 |

4. ViewModelBase

public class MyViewModel : ViewModelBase
{
    private string _name = "";
    public string Name
    {
        get => _name;
        set => this.RaiseAndSetIfChanged(ref _name, value);
    }
    
    public override void RegisterMsg()
    {
        MessageBus.Subscribe<MyMessage>(this, OnMyMessage);
    }
}

5. GzNotification 通知


// 显示通知
GzNotification.Instance.Show(
    "操作成功", 
    "数据已保存", 
    NotificationType.Success
);

6. UIHelper 对话框

// 错误对话框
await UIHelper.GzShowErrorMsg(
    "加载错误", 
    "文件不存在",
    parentWindow: this
);

// 警告对话框
await UIHelper.GzShowWarningMsg("警告", "此操作无法撤销");

// 信息对话框
await UIHelper.GzShowInfoMsg("提示", "文件已保存");

// 确认对话框(返回 true/false)
var result = await UIHelper.GzShowConfirmDialog(
    "确认删除", 
    "是否确定删除该项?",
    this
);
if (result)
{
    // 用户点击确定
}

5. UIThreadHelper

// UI 线程执行
await UIThreadHelper.RunOnUIThread(() =>
{
    StatusText = "完成";
});

6. 窗口关闭事件处理

public partial class MyWindow : Window
{
    public MyWindow()
    {
        InitializeComponent();
        
        // 关闭前确认
        Closing += async (sender, args) =>
        {
            args.Cancel = true;
            var result = await UIHelper.GzShowConfirmDialog(
                "确认", "是否关闭?", this
            );
            if (result)
            {
                Closing -= Closing;
                Close();
            }
        };
    }
}

📝 完整窗口模板

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:views="clr-namespace:SuperSDK.UI.Views;assembly=SuperSDK.UI"
        SystemDecorations="None"
        Background="Transparent"
        TransparencyLevelHint="Transparent"
        CanResize="True">
    
    <Border Background="{DynamicResource SemiColorBackground1}"
            BorderBrush="{DynamicResource SemiColorBorder}"
            BorderThickness="1"
            CornerRadius="6">
        <Grid RowDefinitions="Auto,*,Auto">
            
            <views:GzTitleBarCtrl Grid.Row="0"
                                  Title="我的应用"
                                  IsMaxEnabled="True"
                                  IsMinEnabled="True"/>
            
            
            <Border Grid.Row="1" 
                    Background="{DynamicResource SemiColorBackground2}"
                    Padding="20">
                <TextBlock Text="内容"
                          Foreground="{DynamicResource SemiColorText0}"/>
            </Border>
            
            
            <Border Grid.Row="2"
                    Background="{DynamicResource SemiColorBackground0}"
                    BorderBrush="{DynamicResource SemiColorBorder}"
                    BorderThickness="0,1,0,0"
                    Padding="16,8">
                <Button Content="确定" Classes="Primary"/>
            </Border>
        </Grid>
    </Border>
</Window>
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
Loading failed

fix db init NotMapped entity scope