提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2022-06-24 10:10:40.137|阅读 129 次
概述:本文主要为大家介绍如何使用Telerik WPF控件在运行时使用主题切换自定义样式,欢迎下载最新版体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
使用隐式样式设置主题,您可以选择在运行时更改控件的主题,而无需重新创建 UI。
合并字典中的资源在资源锁定范围中占据一个位置,该位置正好在它们合并到的主资源字典的范围之后。 您可以做的是将自定义样式隔离在单独的资源字典中,并在每次更改主题时将它们添加到默认字典之后。
例如,您可以按照以下步骤操作:
1. 创建一个新应用程序并从位于Telerik UI for WPF安装文件夹中的 Binaries.NoXaml 文件夹中添加所需的程序集以及主题程序集:
2. 在 App.xaml 中为默认主题添加相应的资源字典:
示例 1:合并资源字典
XAML
<ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/Telerik.Windows.Themes.Office_Black;component/Themes/System.Windows.xaml"/> <ResourceDictionary Source="/Telerik.Windows.Themes.Office_Black;component/Themes/Telerik.Windows.Controls.xaml"/> <ResourceDictionary Source="/Telerik.Windows.Themes.Office_Black;component/Themes/Telerik.Windows.Controls.Input.xaml"/> <!-- ... --> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>
注意:最初,我们合并 Office_Black 主题的资源字典。
3. 将您选择的一些控件添加到应用程序的布局根目录中,还有两个用于在主题之间切换的按钮。
示例 2:添加按钮来在主题之间切换
XAML
<Grid x:Name="LayoutRoot" Background="White"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <telerik:RadButton Content="Button" VerticalAlignment="Center" Width="100"/> <StackPanel Grid.Row="1" Orientation="Horizontal"> <Button x:Name="Office_Black" Margin="5" Content="Office__Black" Click="Office_Black_Click"/> <Button x:Name="Office2016" Margin="5" Content="Office2016" Click="Office2016_Click"/> </StackPanel> </Grid>
4. 现在,将自定义样式添加到项目的 Themes 文件夹中名为 CustomStyles_Office_Black.xaml 和 CustomStyles_Office2016.xaml的不同主题的单独资源字典中,这些自定义资源字典将具有以下内容:
示例 3:在单独的资源字典中添加自定义样式
XAML
<ResourceDictionary xmlns="//schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:telerik="//schemas.telerik.com/2008/xaml/presentation" xmlns:x="//schemas.microsoft.com/winfx/2006/xaml"> <Style TargetType="telerik:RadButton" BasedOn="{StaticResource RadButtonStyle}"> <Setter Property="Background" Value="Black"/> <Setter Property="Foreground" Value="White"/> </Style> </ResourceDictionary>
注意:为不同的主题创建单独的资源字典允许在每个主题的基础上轻松定制,但是您可以在切换主题时使用单个字典并仅合并此字典,前提是您没有任何特定于主题的更改。此类更改将包括任何修改过得空间模板,因为这些模板因主题而异,并且可能在切换时导致错误。
示例 4:将字典添加到 MergedDictionaries
XAML
<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/Telerik.Windows.Themes.Office_Black;component/Themes/System.Windows.xaml"/> <ResourceDictionary Source="/Telerik.Windows.Themes.Office_Black;component/Themes/Telerik.Windows.Controls.xaml"/> <ResourceDictionary Source="/Telerik.Windows.Themes.Office_Black;component/Themes/Telerik.Windows.Controls.Input.xaml"/> <!-- ... --> <ResourceDictionary Source="/ProjectName;component/Themes/CustomStyles_Office_Black.xaml"/> </ResourceDictionary.MergedDictionaries>
请注意,您应该将 ProjectName 替换为项目的实际名称。
6. 然后,在按钮的 Click 处理程序中,我们将从应用程序资源中清除合并的字典,并将主题程序集中的新资源字典与自定义资源字典中包含的自定义样式合并:
示例 5:单击按钮时清除和合并字典
C#
private void Office_Black_Click(object sender, RoutedEventArgs e) { this.MergeDictionaries("Office_Black"); } private void Office2016_Click(object sender, RoutedEventArgs e) { this.MergeDictionaries("Office2016"); } private void MergeDictionaries(string theme) { Application.Current.Resources.MergedDictionaries.Clear(); Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Telerik.Windows.Themes." + theme + ";component/Themes/System.Windows.xaml", UriKind.RelativeOrAbsolute) }); Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Telerik.Windows.Themes." + theme + ";component/Themes/Telerik.Windows.Controls.xaml", UriKind.RelativeOrAbsolute) }); Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Telerik.Windows.Themes." + theme + ";component/Themes/Telerik.Windows.Controls.Input.xaml", UriKind.RelativeOrAbsolute) }); Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/ProjectName;component/Themes/CustomStyles_" + theme + ".xaml", UriKind.RelativeOrAbsolute) }); }
请注意,MergeDictionaries 中提供的主题应与相应主题程序集的名称匹配,例如 - Expression_Dark、Office2016Touch、Material。 使用这种方法,您可以切换到Telerik UI for WPF套件提供的任何主题。
基于上述代码的结果如图 1 所示。
图 1:带有 Office_Black 和 Office 2016 主题的单选按钮
Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio工具箱中。
Telerik_KendoUI产品技术交流群:726377843 欢迎一起进群讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:慧都网本文将演示如何使用DevExpress WPF Grid控件实现列和带的固定,欢迎下载最新版组件体验!
在本文中,我们将探讨如何通过使用 JxBrowser 和 Quill.js 将现代富文本编辑器嵌入到 Java 桌面应用程序中,来克服 Swing、JavaFX 和 SWT 中内置编辑器的局限性。
Word 文档中的批注通常用于协作审阅和反馈。这些批注可能包含文本和图片,它们为文档改进提供了重要的参考信息。本文将演示如何使用 Spire.Doc for Java 在 Java 中提取 Word 文档中的批注文本和图片。
本文主要介绍如何使用DevExpress WinForms Data Grid组件实现列重新排序,欢迎下载最新版组件体验!
拥有超过100个UI控件,可快速构建企业级办公WPF应用程序。
Telerik DevCraft最完整的.NET、Web和Mobile开发工具,智能制造首选控件。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢