1、首先使用nuget包管理器下载handycontrol
2、app.xaml里面引用,这样可以使用里面的样式
<Application x:Class="HandyControlTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:HandyControlTest"
xmlns:hc="https://handyorg.github.io/handycontrol"
StartupUri="MainWindow.xaml">
<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>
</Application>
这里皮肤还有 SkinDark.xaml暗黑色,ColorsViolet.xaml紫色 可选
3、下载demo,可以查看有哪些控件,以及控件怎么使用
下载地址:链接: https://pan.baidu.com/s/1gi98TDiVisi2Y0x94wEj2Q 提取码: 0505
4、多语言翻译及切换
使用内置的多语言文本
//xaml
//第一步,引入命名空间:
xmlns:hc="https://handyorg.github.io/handycontrol"
//第二步,使用语言包:
<TextBlock Text="{x:Static hc:Lang.Cancel}"/>
//C#
HandyControl.Properties.Langs.Lang.Cancel
切换语言
ConfigHelper.Instance.SetLang(string lang);
多语言工具:ResXManager.VSIX.vsix
链接: https://pan.baidu.com/s/1nKU-0ol1gD3LOiSUxHwsOw 提取码: 0505
5、在标题栏增加菜单(还可以增加非客户区的高度 NonClientAreaHeight="62")
<hc:Window.NonClientAreaContent>
<Border Height="62">
<Menu Margin="10,0,0,0">
<MenuItem Height="29" Header="文件">
<MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://github.com/NaBian/HandyControl" Header="GitHub">
</MenuItem>
<MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://www.nuget.org/packages/HandyControl" Header="NuGet">
</MenuItem>
</MenuItem>
<MenuItem Height="29" Header="视图">
<MenuItem Command="{Binding OpenViewCmd}" Header="菜单">
</MenuItem>
<MenuItem Command="{Binding OpenViewCmd}" Header="菜单">
</MenuItem>
</MenuItem>
</Menu>
</Border>
</hc:Window.NonClientAreaContent>
6、修改按钮自定义样式
<Button Name="btntest2" Content="{lang:StringResources Test}"
Style="{StaticResource ButtonCustom}"
Background="LightGreen"
hc:BorderElement.CornerRadius="4"
hc:BackgroundSwitchElement.MouseHoverBackground="LightPink"
hc:BackgroundSwitchElement.MouseDownBackground="Gold"
Width="100" Height="35" Click="Button_Click" Grid.Row="2" Grid.Column="1"></Button>
通过设置样式,背景色,鼠标移上去的背景色,按下的背景色,以及圆角弧度,实现自定义样式按钮
7、修改Messagebox显示的样式
后台代码:
HandyControl.Controls.MessageBox.Show(new MessageBoxInfo()
{
Message = "好的",
Caption = "提示",
Button = MessageBoxButton.OK,
StyleKey = "MessageBoxCustom"
});
前端样式:
<Style x:Key="MessageBoxCustom" TargetType="hc:MessageBox" BasedOn="{StaticResource {x:Type hc:MessageBox}}">
<Setter Property="NonClientAreaBackground" Value="#262e2f"/>
<Setter Property="OtherButtonHoverBackground" Value="#888580"/>
<Setter Property="OtherButtonForeground" Value="White"/>
<Setter Property="OtherButtonHoverForeground" Value="White"/>
<Setter Property="NonClientAreaForeground" Value="White"/>
<Setter Property="CloseButtonForeground" Value="White"/>
</Style>
一开始我失败了,提示Messagebox的样式找不到,后来发现是调用基类样式的方式不对
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Fpi.HandyControl;component/Resources/Themes/SkinDefault.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Fpi.HandyControl;component/Resources/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
应该在APP的Resource里面引用默认的样式,然后加载自己修改部分的样式,这样就可以了,最初的时候,我是加载了自己的样式,然后在自己的样式的xaml里面加载了默认的样式,这样操作貌似不行。
效果:
8、