模板概念翻译 样式与模板[翻译]
日期:2023-03-11 12:39:36 / 人气: 1019 / 发布者:成都翻译公司
这篇概述主要集中在应用程序的样式和模板,并没有讨论数据绑定的概念。另外,理解资源是很重要的,资源使得样式和模板能够重复使用。这个简单的图片例子使用了样式和模板创造了一个引人入胜用户体验。WPF主题是通过样式和模板机制进行定义的,WPF公开了任何元素的视觉效果。为了共享这些资源,包含了样式和模板,交叉应用,你可以创建一个XAML文件,并且定义资源字典。WPF 样式和模板涉及一组功能(样式、模板、触发器和故事板)模板概念翻译,允许开发人员和设计人员创建具有视觉吸引力的效果并为产品创建一致的界面。虽然开发人员和设计人员可以根据广泛的应用程序自定义界面。为了允许应用程序表面的维护和共享,需要强大的样式和模板模型。WPF 提供了这种模型。
WPF 风格模型的另一个特点是表现层和逻辑层的分离。这意味着设计人员只能使用XAML 来完成应用程序接口,同时开发人员可以使用C# 或VB 来完成程序的逻辑。
本概述侧重于应用程序样式和模板,不讨论数据绑定的概念。
此外,了解资源也很重要。资源使样式和模板能够被重用。
本主题包含以下部分:
样式和模板示例
风格基础
数据模板
控制模板
触发器
共享资源和主题
相关话题
样式和模板示例
概述中使用的代码示例基于一些简单的照片,如下所示:
这个简单的图片示例使用样式和模板来创建引人入胜的用户体验。此示例有两个 Textblock 元素和一个绑定到一组图片的 ListBox 控件。
风格基础
您可以将 Style 视为应用一组属性值的便捷方式,而不仅仅是一个元素。考虑以下 TextBlock 元素及其默认界面。
我的照片
看看我的新照片!
您可以通过直接设置TextBox 的属性来更改默认界面,例如FontSize 和FontFamily。但是,如果您希望 Textblock 元素共享某些属性,则可以在 XAML 文件资源部分中创建样式,如下所示:
当您将样式的 TargetType 设置为 TextBlock 时,该样式将应用于所有窗口 TextBlock 元素。
TextBlock元素的界面如下:
款式延伸
也许您希望两个 TextBlock 元素共享相同的属性值,例如 FontFamily 和 HorizontalAlignment,但您还希望“我的图片”具有一些附加属性。您可以根据第一个样式创建新样式,如下所示:
目标类型=“文本块”
X:键=“标题文本”>
请注意,上面的样式给出了 x:Key。为了应用此样式,您将样式的属性设置为 TextBlock 并需要 x:Key 值,如下所示:
我的照片
看看我的照片!
现在TextBlock样式中间有HorizontalAlignment,FontFamily的值为Comic Sans MS,FontSize的值为26。Foreground的值为LinearGradientBrush,如下例所示。请注意,它会覆盖父类型的 FontSize。如果样式中有多个 setter,则*后声明的 setter 优先。
TextBlock 元素如下所示:
TitleText 样式扩展了用于 TextBlock 的样式。您还可以使用 x:Key 值将样式扩展为具有 x:Key。
TargetType 属性和 x:Key 属性的关系
如第一个示例所示,将 TargetType 属性设置为 TextBlock 而不将 x:Key 分配给样式将导致样式应用于所有 TextBlock 元素。在这个例子中,x:Key 被隐式设置为 {x:Type TextBlock},这意味着如果你将 x:Key 设置为另一种类型而不是 {x:Type TextBlock},Style 将不会应用于所有 TextBlock 元素. 也就是说,您必须将样式应用到 TextBlock。如果未为资源中的样式设置目标类型,则必须提供 x:Key。
为了为 x:Key 提供默认值,TargetType 属性指定了 set 属性将应用于哪些类型。如果未指定 TargetType,则必须使用类名来设置 Setter 对象中的属性,例如,Property = "ClassName.Property"。例如,不要设置 Property = "FontSize",而是将 Property 设置为 "TextBlock.FontSize" 或 "Control.FontSize"。
另请注意,许多 WPF 控件都是由 WPF 控件组成的。如果您想创建一个样式以应用于所有类型的控件,您可能会得到意想不到的结果。例如,如果您创建的样式以窗口的 Textblock 类型为目标,则该样式将应用于所有 TextBlock 控件,即使 TextBlock 是另一个控件(如 ListBox)的一部分。
样式和资源
您可以在继承自 FrameworkElement 和 FrameworkContentElement 的任何元素上使用样式。*常用的方法是在 XAML 文件的资源部分将样式声明为资源,如上例所示。因为样式是资源,所以需要严格遵守所有应用于资源的范围规则;样式声明影响使用样式的位置。例如,如果您在应用程序根元素的 XAML 中声明样式,则该样式可以应用于应用程序中的任何位置。如果您创建导航应用程序并声明样式是应用程序的 XAML 文件的一部分,则该样式只能在 XAML 文件中使用。
以编程方式设置样式
为了以编程方式为元素分配样式名称,从资源集中获取样式并将其分配给元素样式属性。请注意,资源集中的项目是对象类型。因此,您必须先检索样式样式,然后再将其分配给样式属性。例如,将定义的 TitleText 样式设置为名为 textblock1 的 TextBlock。请执行以下操作:
Textblock1.Style = (Style)(this.Resources[“TitleText”]);
请注意,样式一旦应用,就会被封装,无法更改。如果要动态更改已应用的样式。您必须创建一种新样式来替换现有样式。
您可以创建一个对象并根据自定义逻辑选择要应用的样式,例如样式选择器。
绑定、动态资源和事件处理程序
请注意,您可以使用 Setter.Value 属性来指定绑定标记扩展和动态资源标记扩展。
到目前为止这
概述仅讨论使用 setter 来设置属性值。您还可以指定事件处理程序的样式。
数据模板
在这种情况下,有一个 ListBox 控件绑定到一组照片。
背景=”银色” 宽度=”600” 边距=”10” SelectedIndex=”0”/>
当前的 ListBox 如下所示:
大多数控件都有一些内容,这些内容通常与数据绑定。在这个例子中,数据是一组照片。在 WPF 中,您使用 DataTemplate 来定义数据的可视化表示。基本上,您放入数据模板的内容决定了应用程序中显示的数据。
在我们的应用示例中,每个自定义图片对象都有一个 Source 属性来指定图片的路径。目前,图片对象只出现在文件路径中。
请注意,DataType 属性与样式的 TargetType 属性非常相似。如果您的数据模板在资源部分中,当您将 DataType 属性指定为类型而不为其分配 x:Key 时,只要该类型出现,就会应用 DataTemplate。您也可以选择使用 x:Key 来分配 DataTemplate,然后将其设置为数据模板的 StaticResource 属性,例如 ItemTemplate 属性和 ContentTemplate 属性。
本质上,上例中的数据模板定义了只要是Photo对象,就应该在Border中以图片的形式呈现。使用这个 DataTemplate,我们的应用程序看起来像这样:
数据模板还提供其他功能。例如,如果您呈现的数据集包含其他集,并且这些集使用 HeaderedItemsControl 类型,例如 Menu 或 TreeView,则存在一个 HierarchicalDataTemplate。另一个数据模板功能是 DataTemplateSelector,它允许您根据自定义逻辑选择数据模板。
控制模板
在 WPF 中,控件的控件模板定义了控件的接口。您可以通过为控件定义新的 ControlTemplate 来更改结构和界面。在许多情况下,这为您提供了足够的灵活性,因此您可以编写自己的自定义控件。
触发器
当属性值更改或引发事件时设置属性和启动操作(例如动画)的触发器。样式、控件模板和数据模板都有 Triggers 属性来设置触发器。有各种类型的触发器。
属性触发
触发器是设置一个属性值,或者根据某个属性值启动一个动作,称为属性触发器。
为了声明如何使用属性触发器,您可以使 ListBoxItem 部分透明,除非它被选中。下面的样式将ListBoxItem的Opacity值设置为0.5. 当IsSelected属性值为true时,Opacity设置为1.0.
此示例使用 Trigger 来设置属性值,但请注意 Trigger 类还具有 EnterActions 和 ExitActions 属性来触发操作的执行。
注意ListBoxItem的MaxHeight属性设置为75.如下图,第三项被选中。
事件触发器和故事板
另一种类型的触发器是 EventTrigger,它根据一个事件启动一组操作。下面的EventTrigger对象指定当鼠标进入ListBoxItem时,在0.2s MaxHeight0.后变为90.2s MaxHeight0.鼠标离开选项时,该属性恢复原值1S内。注意不需要指定MouseLeave的值,这是因为动画可以跟踪原始值。
持续时间=”0:0:0.2”
Storyboard.TargetProperty="MaxHeight"
到=”90” />
持续时间=”0:0:1”
Storyboard.TargetProperty="MaxHeight" />
如下图,鼠标指向第三项:
多触发器、数据触发器、多数据触发器
除了 Trigger 和 EventTrigger 之外,还有一些其他类型的触发器。MultiTrigger 允许您根据多个条件设置属性值。当您的属性是数据绑定时,请使用 DataTrigger 和 MultiDataTrigger。
共享资源和主题
典型的 WPF 程序在整个应用程序中可能有多个用户界面资源。通常,可以将这些资源集视为应用程序的主题。WPF 支持将 UI 资源打包成主题,并通过资源字典将它们封装到 ResouceDictionary 类中。
WPF 主题通过样式和模板机制定义,WPF 公开任何元素的视觉效果。
WPF 主题资源存储在嵌入式资源字典中。这些资源字典必须嵌入到签名的程序集中,或者它们可以嵌入到与代码相同的程序集中,或并排的程序集中。对于 PresentationFramewoek.dll,包含 WPF 控件和主题资源的程序集是一系列并排的程序集。
在寻找元素的样式时,主题成为*后的位置。通常,搜索会从元素树开始,寻找合适的资源模板概念翻译,然后查看应用资源集,*后查询系统。这使应用程序开发人员有机会在达到主题之前为树和应用程序级别的任何对象重新定义样式。
您可以将资源字典定义为单独的文件,使您能够在多个应用程序中使用主题。您还可以通过定义多个资源字典来创建可热插拔的主题,为相同的资源提供不同的值。在应用程序级别呈现这些样式或资源是应用程序皮肤的推荐方法。
为了共享这些资源,包括样式和模板,以及跨应用程序,您可以创建一个 XAML 文件并定义一个资源字典。例如,检查下面的说明,其中显示了使用 ControlTemplate Sample 进行样式设置的一部分。
如果您看到示例中的 XAML 文件,您一定注意到该文件包含这句话:
<ResourceDictionary Source="Shared.xaml" />
这是shared.xaml,定义了一个资源字典,包含了一组样式和画笔资源,使控件具有一致的外观。
参考:(VS.100).aspx
转载于:
相关阅读Relate
热门文章 Recent
- 2018年英语四级作文翻译模板 2018年6月英语四级作文模板:表示现象说明文2023-03-11
- 技能证书翻译模板 英文简历技能证书撰写技巧汇总2023-03-11
- 迪拜驾照翻译模板 中国驾照可以在迪拜用吗?好消息来了2023-03-11
- 签证户口本翻译模板英语 户口本和身份证中英文翻译模板2023-03-11
- 翻译服务的保密协议及合同模板 翻译服务合同协议模板2023-03-11
- 户口本翻译公证模板 证书证件翻译2023-03-11
- 工行存单翻译模板 工商银行 存款证明(精选多篇).doc2023-03-11
- 加拿大网签房产证翻译模板 加拿大学生签证材料清单盘点 必须确保证明的真实性2023-03-11
- 面试翻译的简历模板 应聘外企必须知道怎么做英文简历2023-03-11
- 房产证附记抵押翻译件模板 只有土地使用证的房子能卖吗?2023-03-11


