根据HandyControl文档的操作将其包含了默认Style的xaml文件引入到了项目的资源中,app.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>
此时一些控件的默认样式就已经改变了,比如随便想往常一样写个button
<Button Content="HandyControl" Margin="20"/>
效果:
但是碰到一些情况并不想使用HandyControl的样式,方法:
1、针对单个控件,将样式设置为null即可:
<Button Style="{x:Null}" Content="取消HandyControl样式" Margin="20"/>
<Button Content="HandyControl" Margin="20"/>
效果:
2、针对某一个页面取消HandyControl的样式(以button为例):
<Window.Resources>
<Style TargetType="Button" BasedOn="{x:Null}"/>
</Window.Resources>
此时不更改上述按钮的定义,仅将这一句加上,
<Window.Resources>
<Style TargetType="Button" BasedOn="{x:Null}"/>
</Window.Resources>
<StackPanel>
<Button Style="{x:Null}" Content="取消HandyControl样式" Margin="20"/>
<Button Content="HandyControl" Margin="20"/>
</StackPanel>
效果:
3、与2相反的情况,当大部分页面不需要HandyControl的样式,只有某一个或某几个页面需要,则可以取消app.xaml中对HandyControl样式的引用
<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>
而仅在需要的页面引入此资源:
<Window.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>
</Window.Resources>
<StackPanel>
<Button Style="{x:Null}" Content="取消HandyControl样式" Margin="20"/>
<Button Content="HandyControl" Margin="20"/>
</StackPanel>
效果:
4、更进一步,如果不是页面需要而只有某几个控件需要HandyControl的样式,那么只需要设置对应的控件resource:
<Button Content="HandyControl" Margin="20">
<Button.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>
</Button.Resources>
</Button>
<Button Content="默认样式" Margin="20"/>
效果:
根据需要选择对应的方法。