没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2022-06-24 10:10:40.137|阅读 132 次
概述:本文主要为大家介绍如何使用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@wqylolg.cn
文章转载自:慧都网CADEditorX是一个ActiveX组件,用于在支持ActiveX和COM技术的任何开发环境中,将CAD功能添加到网页或正在开发的应用程序中。同时可以查看、编辑、转换、打印和测量DWG、DXF、SVG、HPGL、PDF、STEP、IGES、STL和其他CAD文件。
DotNetBrowser 是 TeamDev 开发的商业跨平台.NET 库,基于 Chromium,可将浏览器控件嵌入 Windows Forms 等桌面应用,支持多系统运行。能实现网页展示、DOM 操作、JS 运行等功能,还适用于无头服务器任务,是开发中实现浏览器相关功能的有力工具。
本教程将为大家介绍如何使用MyEclipse的可视化JSF编辑器设计JSP,欢迎下载最新版IDE体验!
在处理 Excel 文件时,除了常见的数据读写操作,有时还需要进一步控制 Excel 文件在打开时的显示状态。本教程将介绍如何使用 Java 和 Spire.XLS for Java 库设置 Excel 文件中的活动工作表和活动单元格。
拥有超过100个UI控件,可快速构建企业级办公WPF应用程序。
Telerik DevCraft最完整的.NET、Web和Mobile开发工具,智能制造首选控件。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢