使用Telerik UI为WPF设置主题
在继续阅读本主题之前,我们建议您阅读Xaml vs. NoXaml篇文章。
的Telerik UI for WPF套件提供主题的多样性这将帮助您实现出色的视觉外观和良好的用户体验。在选择应用什么主题之前,您可能会发现熟悉主题概念Xaml和NoXaml的区别。
什么是主题?
一个主题包含Telerik控件可视化所需的所有样式和资源。每个主题由多个XAML文件组成。您可以将每个单独的文件视为某个控件可视化所需的兼容样式的集合。由于大多数自定义控件相当复杂,并且在自身中包含其他自定义控件,因此通常需要多个文件的资源。
主题设置机制
有两种机制可用于设置主题。
使用隐式风格在本例中,使用NoXaml dll。
使用StyleManager在这种情况下,使用Xaml dll。
使用隐式样式设置主题
使用隐式样式可以提供完全的Blend支持和更小的dll大小。要使用此机制,您将需要使用NoXamlWPF dll的UI版本。
要更改主题,您需要执行以下几个步骤。
参考NoXaml版本WPF dll的Telerik UI。它们可以在*/Telerik UI for WPF安装文件夹/Binaries中找到。NoXaml / *文件夹。
获取.xaml文件控件样式和模板。
有两个选项可以获取.xaml文件。
- 引用主题dll从/二进制文件。NoXaml /文件夹-例如Telerik.Windows.Themes.Office_Black.dll。主题dll包含包含控件样式的ResourceDictionary文件。
- 将XAML文件复制到应用程序中的专用文件夹中.你可以从/Telerik UI for WPF安装文件夹/Themes。隐式/文件夹中。
合并所需的.xaml文件在App.xaml文件中。
在隐式样式(NoXaml)场景中,您将需要合并每个引用dll的资源。例如,要使用RadGridView,你需要引用以下dll。
- Telerik.Windows.Controls.dll
- Telerik.Windows.Controls.Input.dll
- Telerik.Windows.Controls.GridView.dll
- Telerik.Windows.Data.dll
然后合并dll中控件的字典,如图所示示例1.
例1:合并Office_Black主题的.xaml文件(从主题dll中)
<应用> <应用程序。资源>
注意
Telerik.Windows.Data.dll
没有任何UI(控件),所以它没有带有样式和模板的ResourceDictionary。
合并App.xaml中的.xaml文件将把主题应用到应用程序中的所有控件。若要仅为特定视图应用主题,可以合并其参考资料中的字典。例如,在
< UserControl.Resources > < / UserControl.Resources >
.若要仅为特定控件应用主题,可以合并控件父容器的“资源”中的字典。
请记住,在基于Telerik控件创建自定义控件或样式时,您将需要使用它们的基本样式。请在样式化控件篇文章。
如何获得合并所需的。xaml文件
您可以在两个地方找到所有必需的.xaml文件,您可以分别使用两种方法在项目中引用它们。
参考主题dll
主题的所有样式和模板都封装在主题dll位于/二进制文件。NoXaml /文件夹(Telerik.Windows.Themes.Material.dll, Telerik.Windows.Themes.Office2016.dll等)。要获得特定主题的样式,可以直接从主题程序集合并其ResourceDictionaries。例如,如果您正在使用Office_Black主题时,应添加对Telerik.Windows.Themes.Office_Black.dll然后合并所需的.xaml文件,如示例1.
我们推荐这种方法,因为升级和维护更容易。另一种(复制XAML文件)是更好的,如果你有高度定制的控件,或者你只使用几个控件,不希望包含所有样式的dll。
将XAML文件复制到应用程序中的专用文件夹中
中还提供了每个主题的默认样式和资源/Telerik UI for WPF安装文件夹/Themes。隐式的文件夹中。为了为您的应用程序应用某个主题,您可以复制所有必需的XAML来自应用程序文件夹中各自主题文件夹(取决于您正在使用的控件集)的文件。然后合并应用程序中的resourcedictionaryMergedDictionaries收集。您应该合并与项目中每个程序集引用对应的所有.xaml文件,如图所示示例2而且图1.
图1:将所需的XAML文件复制到应用程序的单独文件夹中
例2:应用程序资源中的mergeddictionary:
<应用程序。资源>
如果您合并了项目引用中缺失的dll的ResourceDictionary,则会发生错误。
在使用隐式样式时,不应该使用StyleManager设置应用程序主题。
如果您在项目中复制.xaml文件,请确保它们的建立行动设置为页面.
使用StyleManager设置主题
StyleManager在处理标准(Xaml) dll时使用。StyleManager是一个基于设置主题在Telerik控件上应用不同样式的类。它允许您在控件级别和应用程序级别设置主题。
要通过StyleManager更改主题,您需要执行以下几个步骤。
引用Xaml版本WPF dll的Telerik UI。他们可以在/Telerik UI for WPF安装文件夹/Binaries/文件夹中。
设置StyleManager。的me attached property在要设置主题的控件上。或设置StyleManager。ApplicationTheme属性InitializeComponent视图或App.xaml.cs文件的方法。这将为所有Telerik控件设置全局主题。
例3:在控件级别上设置主题
StyleManager。SetTheme(radControlInstance, new Office2016Theme());
StyleManager。SetTheme(radControlInstance, New Office2016Theme())
例4:在应用程序级别设置主题
StyleManager。ApplicationTheme = new Office2016Theme();InitializeComponent ();
StyleManager。ApplicationTheme = New Office2016Theme() InitializeComponent()
有关此方法的详细信息,请参阅StyleManager帮助部分。
不支持在使用StyleManager时合并主题资源字典(混合隐式样式theme和StyleManager)。仅在Xaml dll中使用StyleManager,或仅在NoXaml二进制文件中使用隐式样式。
在运行时通过设置切换全局主题
StyleManager。ApplicationTheme
不支持。要启用此特性,请使用NoXaml dll和隐式样式主题。欲知详情,请浏览在运行时切换主题篇文章。
改变颜色变化
一些Telerik主题支持调色板,其中包含相关主题的资源。一些调色板具有不同的颜色变化,可以使用LoadPreset方法。
例5:改变主题的颜色变化
//默认的颜色变化GreenPalette.LoadPreset(GreenPalette.ColorVariation.Dark);
//默认颜色变化GreenPalette.LoadPreset(GreenPalette.ColorVariation.Dark)
要查看哪些主题支持多种颜色变化,请检查可用的主题篇文章。
主题是否影响所有WPF控件?
所有主题都是专门设计的风格Telerik控制。然而,有一些本机微软WPF也受主题化机制影响的控件。控件中可以找到这些控件的列表在MS控件上设置主题篇文章。