C# WPF 开源主题 HandyControl 的使用(一)

HandyControl是一套WPF控件库,它几乎重写了所有原生样式,同时包含80余款自定义控件(正逐步增加),下面我们开始使用。

1、准备

1.1 创建项目

C# WPF应用(.NET Framework)创建项目

1.2 添加包

1.3 在App.xaml中引用HandyControl的皮肤和主题:

cs 复制代码
<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</Application.Resources>

1.4 窗体文件xaml添加引用

xmlns:hc="https://handyorg.github.io/handycontrol"

2、窗体

2.1 改Window为hc:Window

cs 复制代码
<hc:Window x:Class="HandyControlTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:hc="https://handyorg.github.io/handycontrol"
        xmlns:local="clr-namespace:HandyControlTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        
    </Grid>
</hc:Window>

2.2 修改窗体的xaml.cs文件

修改窗体类名,否则报错:"分部声明一定不能指定不同的基类"

public partial class MainWindow : Window

public partial class MainWindow : HandyControl.Controls.Window

2.3 扩展属性

2.4 代码修改

cs 复制代码
CloseButtonBackground="Blue" CloseButtonForeground="White"
CloseButtonHoverBackground="Red" CloseButtonHoverForeground="Black"
OtherButtonBackground="Green" OtherButtonForeground="White"
OtherButtonHoverBackground="Yellow" OtherButtonHoverForeground="Black"

2.5 运行结果

2.6 其它参数

NonClientAreaBackground用来设置了标题栏的背景色。NonClientAreaForeground用来设置标题栏的前景色,不仅仅可以用来设置标题的前景色,也可以设置NonClientAreaContent中控件的默认前景色。NonClientAreaHeight用来设置标题栏的高度。下面看一段代码:

cs 复制代码
<hc:Window x:Class="TestDemo.View.WindowTest"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:hc="https://handyorg.github.io/handycontrol"
        Title="WindowTest" Height="200" Width="400"
        NonClientAreaBackground ="LightBlue" NonClientAreaForeground="Red"
        NonClientAreaHeight="100">
    <hc:Window.NonClientAreaContent >
        <Border BorderThickness="1" BorderBrush="Black">
            <StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
                <Button Margin="5,0,0,0" Content="登录"/>
                <TextBlock Text="服务未连接" VerticalAlignment="Center" Margin="5,0,0,0" />
            </StackPanel>
        </Border>
    </hc:Window.NonClientAreaContent>
</hc:Window>

运行效果:

3、 按钮

3.1 代码

cs 复制代码
<Grid>
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal">
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonBaseBaseStyle}" Foreground="Black" />
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonDanger}" />
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonDashedDanger}" />
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonDashedInfo}" />
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonInfo}" />
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonPrimary}" />
            </StackPanel>
            <StackPanel Orientation="Horizontal">
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonWarning}" />
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonSuccess}" />
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonSuccess}" 
                        hc:BorderElement.CornerRadius="15"/>
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonDanger.Small}" />
                <Button Margin="10,10" Width="45"
                        Style="{StaticResource ButtonIcon}" 
                        hc:IconElement.Geometry="{StaticResource AddGeometry}"
                        Foreground="Green"/>
                <Button Margin="10,10" Width="45"
                        Style="{StaticResource ButtonIcon}" 
                        hc:IconElement.Geometry="{StaticResource RemoveGeometry}"
                        Foreground="Green"/>
                <Button Margin="10,10" Width="45" Height="45"
                        Style="{StaticResource ButtonIcon}" 
                        hc:IconElement.Geometry="{StaticResource SuccessGeometry}"
                        Foreground="White"
                        Background="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                <Button Content="按钮" Margin="10,10" Width="75"
                        Style="{StaticResource ButtonWarning}" 
                        hc:IconElement.Geometry="{StaticResource SuccessGeometry}"
                        Foreground="Black"/>
            </StackPanel>
        </StackPanel>
</Grid>

3.2 运行效果

相关推荐
m0_5557629021 分钟前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
浪裡遊1 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
lzb_kkk2 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼2 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
简佐义的博客3 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
程序员爱钓鱼3 小时前
【无标题】Go语言中的反射机制 — 元编程技巧与注意事项
开发语言·qt
Frank学习路上3 小时前
【IOS】XCode创建firstapp并运行(成为IOS开发者)
开发语言·学习·ios·cocoa·xcode
2301_805054564 小时前
Python训练营打卡Day59(2025.7.3)
开发语言·python
lsx2024064 小时前
CSS 网页布局:从基础到进阶
开发语言