HEFrame.WpfUI :一个现代化的 开源 WPF UI库

HEFrame.WpfUI 控件库

现代化、美观的 WPF UI 控件库

GitHub链接:HEFrame.WpfUI,欢迎各位Star

📚 目录

📋 简介

HEFrame.WpfUI 是一个现代化的 WPF UI 控件库,提供了丰富的自定义控件和样式,帮助开发者快速构建美观、专业的桌面应用程序。该控件库遵循现代设计理念,支持源码、展示主题切换、动画效果,并且完全兼容 MVVM 设计模式。

✨ 特性

  • 丰富的控件集合:包含 30+ 种常用控件,满足各类应用场景
  • 现代化设计:遵循扁平化、简约的设计风格
  • 主题定制:支持亮色/暗色主题切换,可自定义主题色
  • 动画效果:内置多种过渡动画和加载动画
  • MVVM 友好:所有控件均支持数据绑定和命令绑定
  • 易于集成:简单的引用方式,快速集成到现有项目

📥 安装与引用

  1. 克隆仓库

    bash 复制代码
    git clone https://github.com/he-ze-xi/HEFrame.WpfUI
  2. 打开Visual Studio编译项目代码

  3. 在编译完的bin目录找到HEFrame.Core.dllHEFrame.Styles.dll,在你的 WPF 项目中添加对这两个 DLL 的引用

🚀 快速开始

1. 添加资源字典

在你的 App.xaml 文件中添加以下资源字典:

xml 复制代码
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/HEFrame.Styles;component/Themes/Generic.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

2. 添加命名空间

在 XAML 文件中添加以下命名空间:

xml 复制代码
xmlns:ui="clr-namespace:HEFrame.Styles.Controls;assembly=HEFrame.Styles"

3. 使用控件

现在你可以在 XAML 中使用 HEFrame 控件了:

xml 复制代码
<ui:HEButton Content="点击我" ButtonType="Primary" />
<ui:HETextBox Grid.Row="3" Margin="15,10" ThemeType="Light" WaterMark="我是水印文字" />
...

Demo界面点击右上角按钮可以看到每个xaml页面的引用代码示例,使用者可以更直观看到每个控件的用法:

📦 控件列表

按钮控件

1. HEButton
  • ButtonType:按钮类型(Primary, Success, Caution, Dranger, Dark, Light, Custom)
  • IsLoading:是否显示加载状态
  • LoadingContent:加载状态显示的文本
xml 复制代码
<!-- 基本用法 -->
<ui:HEButton Content="主要按钮" ButtonType="Primary" />
<ui:HEButton Content="成功按钮" ButtonType="Success" />
<ui:HEButton Content="警告按钮" ButtonType="Caution" />
<ui:HEButton Content="危险按钮" ButtonType="Dranger" />
<ui:HEButton Content="深色按钮" ButtonType="Dark" />
<ui:HEButton Content="浅色按钮" ButtonType="Light" />

<!-- 禁用状态 -->
<ui:HEButton Content="禁用按钮" ButtonType="Primary" IsEnabled="False" />

<!-- 加载状态 -->
<ui:HEButton Content="加载按钮" 
             ButtonType="Primary" 
             IsLoading="{Binding IsLoading}" 
             LoadingContent="加载中..." />

<!-- 自定义样式 -->
<ui:HEButton Content="自定义按钮" 
             ButtonType="Custom" 
             Background="Black" 
             Foreground="White" 
             BorderBrush="{DynamicResource PrimaryBackground}" 
             BorderThickness="1" 
             HoverBackground="{DynamicResource PrimaryMouseHover}" />
2. HEToggleButton
  • ThemeType:主题类型(Light, Dark)
  • IsChecked:是否选中
xml 复制代码
<ui:HEToggleButton ThemeType="Light" IsChecked="{Binding IsActive}" />
3. HERadioButton
xml 复制代码
<ui:HERadioButton Content="选项1" GroupName="Options" IsChecked="True" />
<ui:HERadioButton Content="选项2" GroupName="Options" />
4. HECheckBox
xml 复制代码
<ui:HECheckBox Content="选择我" IsChecked="{Binding IsSelected}" />

输入控件

5. HETextBox
xml 复制代码
<ui:HETextBox Watermark="请输入用户名" Text="{Binding Username}" />
6. HEPasswordBox
xml 复制代码
<ui:HEPasswordBox Watermark="请输入密码" Password="{Binding Password}" />
7. HEComboBox
xml 复制代码
<ui:HEComboBox ItemsSource="{Binding Options}" 
               DisplayMemberPath="Name" 
               SelectedValuePath="Id" 
               SelectedValue="{Binding SelectedId}" />

列表控件

8. HEListView
xml 复制代码
<ui:HEListView ItemsSource="{Binding Items}">
    <ui:HEListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </ui:HEListView.ItemTemplate>
</ui:HEListView>
9. HEListBox
xml 复制代码
<ui:HEListBox ItemsSource="{Binding Items}" 
              SelectedItem="{Binding SelectedItem}">
    <ui:HEListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </ui:HEListBox.ItemTemplate>
</ui:HEListBox>

滑块控件

10. HESlider
xml 复制代码
<ui:HESlider Minimum="0" 
             Maximum="100" 
             Value="{Binding SliderValue}" 
             TickFrequency="10" 
             IsSnapToTickEnabled="True" />

进度条控件

11. HEProgressBar
xml 复制代码
<ui:HEProgressBar Value="{Binding Progress}" Maximum="100" />

选项卡控件

12. HETabControl
  • ThemeType:主题类型(Light, Dark)
  • SelectionChangedCommand:选项卡切换命令

示例:

xml 复制代码
<ui:HETabControl ThemeType="Light" 
                 ItemsSource="{Binding TabItems}" 
                 SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}" 
                 SelectionChangedCommand="{Binding SwitchPageCommand}">
    <ui:HETabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Header}" />
        </DataTemplate>
    </ui:HETabControl.ItemTemplate>
    <ui:HETabControl.ContentTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding Content}" />
        </DataTemplate>
    </ui:HETabControl.ContentTemplate>
</ui:HETabControl>

菜单控件

13. HEExpanderMenu
  • Header:菜单标题
  • MenuItems:菜单项集合
  • MenuSwitchCommand:菜单切换命令
  • ThemeType:主题类型(Light, Dark)
xml 复制代码
<ui:HEExpanderMenu Header="系统设置" 
                   MenuItems="{Binding MenuItems}" 
                   MenuSwitchCommand="{Binding PageSwitchCommand}" 
                   ThemeType="Light" />
14. HEContextMenu
xml 复制代码
<TextBlock Text="右键点击我">
    <TextBlock.ContextMenu>
        <ui:HEContextMenu>
            <MenuItem Header="复制" Command="{Binding CopyCommand}"/>
            <MenuItem Header="粘贴" Command="{Binding PasteCommand}"/>
        </ui:HEContextMenu>
    </TextBlock.ContextMenu>
</TextBlock>

提示控件

15. HEToolTip
xml 复制代码
<Button Content="鼠标悬停查看提示">
    <ui:HEToolTip.ToolTip>
        <ui:HEToolTip Content="这是一个自定义工具提示" />
    </ui:HEToolTip.ToolTip>
</Button>

控件

16. HEGroupBox
xml 复制代码
<ui:HEGroupBox Header="基本信息">
    <StackPanel>
        <ui:HETextBox Watermark="姓名" />
        <ui:HETextBox Watermark="年龄" />
    </StackPanel>
</ui:HEGroupBox>
17. HEExpander
xml 复制代码
<ui:HEExpander Header="详细信息">
    <StackPanel>
        <TextBlock Text="这里是详细信息内容" />
    </StackPanel>
</ui:HEExpander>

消息卡片控件

18. HEMessageCard
xml 复制代码
<ui:HEMessageCardHost ShowDirection="FromTop" />

<!-- 在代码中使用 -->
HEMessageService.SendMessage("操作成功", MessageType.Success, "GlobalMessageToken");

数据控件

19. HEDataGrid
xml 复制代码
<ui:HEDataGrid ItemsSource="{Binding DataList}" 
               AutoGenerateColumns="False">
    <ui:HEDataGrid.Columns>
        <DataGridTextColumn Header="姓名" Binding="{Binding Name}" />
        <DataGridTextColumn Header="年龄" Binding="{Binding Age}" />
        <DataGridCheckBoxColumn Header="是否激活" Binding="{Binding IsActive}" />
    </ui:HEDataGrid.Columns>
</ui:HEDataGrid>

加载动画控件

20. HELoadingAnimation
  • AnimationType:动画类型(Default, CircleArrow, CirclePoint, CircleLine, LinePoint)
  • IsActive:是否激活动画
  • LoadingContent:加载提示文本
xml 复制代码
<ui:HELoadingAnimation AnimationType="CircleArrow" 
                       IsActive="{Binding IsLoading}" 
                       LoadingContent="正在加载数据..." />

过渡动画控件

21. HETransitionAnimation
  • TransitionType:过渡类型(Fade, Slide, Zoom, Flip)
  • IsStartAnimation:是否启动动画
xml 复制代码
<ui:HETransitionAnimation TransitionType="{Binding TransitionType}" 
                          IsStartAnimation="true">
    <ContentControl Content="{Binding CurrentPage}" />
</ui:HETransitionAnimation>

日期控件

22. HEDatePicker
xml 复制代码
<ui:HEDatePicker SelectedDate="{Binding SelectedDate}" />
23. HECalendar
xml 复制代码
<ui:HECalendar SelectedDate="{Binding SelectedDate}" 
               DisplayDate="{Binding DisplayDate}" 
               SelectionMode="SingleDate" />

🎨 主题定制

HEFrame.WpfUI 支持主题定制,你可以通过修改资源字典来自定义主题。

切换亮色/暗色主题

xml 复制代码
<!-- 亮色主题 -->
<ResourceDictionary Source="pack://application:,,,/HEFrame.Styles;component/HEStyles/Default/LightTheme.xaml" />

<!-- 暗色主题 -->
<ResourceDictionary Source="pack://application:,,,/HEFrame.Styles;component/HEStyles/Default/DarkTheme.xaml" />

自定义主题色

你可以在应用程序资源中覆盖默认颜色:

xml 复制代码
<Application.Resources>
    <ResourceDictionary>
        <!-- 自定义主题色 -->
        <SolidColorBrush x:Key="PrimaryBackground" Color="#1890FF" />
        <SolidColorBrush x:Key="PrimaryMouseHover" Color="#40A9FF" />
        <SolidColorBrush x:Key="PrimaryMouseDown" Color="#096DD9" />
        
        <ResourceDictionary.MergedDictionaries>
            <!-- 其他资源字典 -->
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
相关推荐
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(77):TSM——让记忆回到事件真正发生的时间
论文阅读·人工智能·学习·开源·github
十六年开源服务商13 小时前
2026网站主题打包方案深度解析
开源
小葱运维13 小时前
命名与环境规范
运维·开源·云计算
菩提小狗14 小时前
每日极客日报 · 2026年09月21日
ai·开源·极客日报·it热点·技术资讯
狂师15 小时前
cloudflared,不需要服务器和公网 IP 的免费内网穿透,一条命令上手
服务器·程序员·开源
samble15 小时前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
_Jonas15 小时前
.net framework开发环境正式环境配置文件的切换
.net·wpf
元岳数字人小元15 小时前
无惧网络受限:数字人私有化部署打造离线全域服务能力
运维·人工智能·开源·人机交互·交互
miofly16 小时前
GitHub 日榜趋势速报 | 2026-09-22
开源·github