提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2021-11-09 10:11:25.217|阅读 140 次
概述:本文主要为大家介绍如何调整WPF应用程序的类型样式,欢迎下载最新版体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
从v.17.2开始,DevExpress WPF套件提供了DevExpress.Xpf.TypedStyles程序集,其中包含以下控件的类型样式:
下图演示了常规样式和类型样式之间的区别。
要为多个按钮设置常规样式,您应该实现一个带有TargetType=Button的 Style,并在单独的Setter中指定每个属性。
类型样式允许您通过以下方式为所有按钮定义样式:
示例:ButtonStyle用于标准Button控件,GridControlStyle用于DevExpress GridControl。
类型样式支持所有常规样式功能。
附加属性
附加属性收集在 MergedStyles 属性中:
XAML
<BorderStyle x:Key="styleWithAttachedProperties"> <KeyboardNavigationStyle IsTabStop="False" /> <FocusManagerStyle IsFocusScope="False" /> <TextBlockStyle FontSize="13" FontWeight="Bold"/> </BorderStyle>
事件
您可以在没有EventSetter的情况下指定事件处理程序:
XAML
<BorderStyle x:Key="styleWithEvents" Loaded="BorderStyle_Loaded"/>
标记扩展
立即返回其值的标记扩展(除了 BindingBase 和 DynamicResoureExtension)可以以常规方式在类型样式中使用:
XAML
<SolidColorBrush x:Key="greenBrush">Green</SolidColorBrush> <ButtonStyle x:Key="styleWithMarkupExtensions" BorderBrush="{StaticResource greenBrush}" Foreground="{x:Null}" />
使用 BindingBase 和 DynamicResourceExtension 标记扩展的“*_Source”属性:
XAML
<ButtonStyle x:Key="styleWithExpressionExtensions" Content_Source="{Binding FirstName}" Tag_Source="{DynamicResource tag}" />
DevExpress 扩展(DXBinding/DXEvent/DXCommand)
/与类型样式无缝协作。
XAML
<ButtonStyle x:Key="styleWithDXBinding" Content_Source="{DXBinding 'FirstName + @Self.Tag + $Button.TemplateProperty.Name'}" Tag="tag" Command_Source="{DXCommand 'Click()'}"/>
注意: 不适用于类型化样式。
基本样式
您可以通过以下方式定义基本样式:
XAML
<ButtonBaseStyle x:Key="baseStyle" Background="Red" /> <ButtonStyle x:Key="styleWithBaseStyle" BasedOn="{StaticResource baseStyle}" ClickMode="Hover"/>
Setters
您可以通过填充 *Style.Setters 集合来使用常规 setter。
XAML
<ButtonStyle x:Key="styleWithStandardSetters"> <ButtonStyle.Setters> <Setter Property="DockPanel.Dock" Value="Bottom" /> </ButtonStyle.Setters> </ButtonStyle>
隐式样式
要定义隐式样式,请使用x:Key替代TargetType:
XAML
<ToggleButtonStyle x:Key="{x:Type ToggleButton}" Width="153" />
目标类型在内部设置为 typed 样式,因此您不应手动设置它。 例如,要为ListBox 定义VirtualizingPanelStyle,您需要先定义ListBoxStyle。
XAML
<ListBoxStyle x:Key="virtualizingStyle"> <VirtualizingPanelStyle IsVirtualizing="True" /> </ListBoxStyle>
触发器
除了类型化样式之外,DevExpress.Xpf.TypedStyles 程序集还包含每个受支持控件的类型化触发器:
XAML
<ButtonStyle x:Key="styleWithTriggers" Margin="1,2,3,4"> <ButtonStyle.Triggers> <ButtonTrigger Visibility="Hidden" IsMouseOver="True"> <TextBlockStyle FontSize="13" /> </ButtonTrigger> </ButtonStyle.Triggers> </ButtonStyle>
您可以在模板中使用类型化触发器。 为此,请指定类型化触发器的 SourceName 或 TemplateName 属性:
XAML
<ControlTemplate x:Key="templateWithTriggers" TargetType="Button"> <TextBlock x:Name="textBlock" /> <ControlTemplate.Triggers> <TextBlockTrigger FontWeight="Black" SourceName="textBlock"> <TextBlockStyle TargetName="textBlock" FontStyle="Oblique"/> </TextBlockTrigger> </ControlTemplate.Triggers> </ControlTemplate>
如果为多个源对象创建触发器,则可以定义多个触发器:
XAML
<ControlTemplate x:Key="templateWithDifferentSourceNamesTriggers" TargetType="Button"> <StackPanel> <TextBlock x:Name="textBlock1" /> <TextBlock x:Name="textBlock2" /> </StackPanel> <ControlTemplate.Triggers> <ButtonTrigger> <ButtonTrigger.Triggers> <MultiTriggerCollection> <TextBlockTrigger IsMouseOver="True" SourceName="textBlock1"/> <TextBlockTrigger IsKeyboardFocusWithin="True" SourceName="textBlock2"/> </MultiTriggerCollection> </ButtonTrigger.Triggers> <TextBlockStyle FontWeight="Bold"/> </ButtonTrigger> </ControlTemplate.Triggers> </ControlTemplate>
数据触发器
使用 TypedDataTrigger 将类型样式与数据触发器一起使用。
XAML
<ButtonStyle x:Key="styleWithDataTriggers" Margin="1,2,3,4"> <ButtonStyle.Triggers> <TypedDataTrigger Binding="{Binding FirstName}" Value="Jon"> <TextBlockStyle FontSize="13" /> </TypedDataTrigger> </ButtonStyle.Triggers> </ButtonStyle>
引用和命名空间
所有类型化的样式和触发器都在 {Corresponding control namespace}.TypedStyles 命名空间中实现。
示例:ButtonStyle - System.Windows.Controls.TypedStyles.
类型化样式的 XAML 命名空间与相应控件的命名空间相同——您不需要添加任何额外的命名空间引用。 要使用类型化样式,请在您的项目中引用 DevExpress.Xpf.TypedStyles 程序集。
限制
性能
类型样式的性能与常规样式相当,以下常规样式在测试机上应用 200 毫秒:
XAML
<Style x:Key="style00" TargetType="Button"> <Setter Property="FontFamily" Value="CourierNew"/> <Setter Property="FontSize" Value="12"/> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> <Setter Property="Focusable" Value="False"/> <Setter Property="Content" Value="test"/> <Setter Property="Background" Value="Red"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Margin" Value="1,2,3,4"/> <Setter Property="Cursor" Value="Hand"/> </Style>
以下通过类型样式实现的模拟在测试机上应用了 130 毫秒:
XAML
<ButtonStyle x:Key="style00" FontFamily="CourierNew" FontSize="12" FocusVisualStyle="{x:Null}" Focusable="False" Content="test" Background="Red" BorderThickness="1" Margin="1,2,3,4" Cursor="Hand" />
DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
DevExpress技术交流群5:742234706 欢迎一起进群讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
行业领先的界面控件开发包,帮助企业构建卓越应用!
DevExpress DXperience Subscription高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
DevExpress WPF Subscription高效MVVM开发模式,WPF界面解决方案首选工具,帮助企业实现酷炫动效界面。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢