WPF 资源、样式、模板

        近期要重新启航了,对过去的知识需要进行一个回顾,每天进步一点点,成长足迹看得见。

        样式设置和模板化是指一套功能,如果想要创建极具视觉表现力的效果和一致的外观,需要自定义应用的外观时,通过强大的样式设置和模板化模型,可以维护和共享应用内部和应用之间的外观。

资源

        资源是可以在应用中的不同位置重复使用的对象。 资源的示例包括画笔和样式。资源系统是一种管理和重用一系列有用对象的方法,这些对象可以包括常用的画刷、样式或模板等。资源系统在WPF中非常重要,它简化了标记,减少了重复的编码,并且允许在中央位置存储用户界面的细节,使得修改变得更容易。在WPF中,资源可以定义在代码中,也可以在XAML标记中定义。

        每个框架级元素(FrameworkElement 或 FrameworkContentElement)都具有 Resources 属性,该属性是包含已定义资源的 ResourceDictionary 类型。

        在标记中定义资源时,可通过 x:Key 指令来分配唯一键。 通常情况下,这个键是一个字符串;但是,也可使用相应的标记扩展将其设置为其他对象类型。 资源的非字符串键用于 WPF 中的某些功能区,尤其是样式、组件资源和数据样式。最常在根元素上定义资源。

资源字典(ResourceDictionary)

        为了资源的可重用性,把资源定义在资源字典里。

        使用资源字典的一个原因是为了定义一个或多个可重用的应用程序“皮肤",可将”皮肤“应用到控件上。另一个原因是为了存储需要被本地化的内容。

        MergedDictionaries是ResourceDictionary对象的一个集合,可使用该集合提供自己希望使用的资源的集合。

静态资源

        静态资源在应用程序加载时只会被检索一次,并且在整个应用程序的生命周期中保持不变。这种资源适用于那些不会改变的值,如颜色、字体

动态资源

        与静态资源不同,动态资源会在每次需要时重新检索,这意味着如果资源的值在运行时发生变化,动态资源会自动更新。这种资源适用于那些可能会随着应用程序状态变化而变化的值,如绑定到用户设置或系统属性的值

资源层级

        应用程序级资源:定义在App.xaml文件中的资源,是整个应用程序范围内可访问的。这些资源可以被应用程序中的任何窗口或控件使用。

        文件级资源:定义在Window或Page的XAML文件中的资源,只能在该文件及其子控件中使用。这些资源对于封装特定窗口或页面的样式和布局非常有用。

        对象级资源:定义在控件或布局容器的XAML文件中的资源,只能在该控件或布局容器及其子控件中使用。这种资源提供了最大的灵活性,允许开发者为每个控件或布局容器定义独特的样式和布局。

样式

        样式Style,将一组属性值应用到多个元素。 可以对从 FrameworkElement 或 FrameworkContentElement(如 Window 或 Button)派生的任何元素使用样式,用于设置组件的外观属性,比如长宽、颜色、字体大小等。

        由于样式是一种资源,所以样式通常是在 XAML 文件的 Resources 部分中声明。声明样式的位置会影响样式的应用范围,因为样式遵从于资源的范围规则。例如,如果在应用定义 XAML 文件的根元素中声明样式,则该样式可以在应用中的任何位置使用。

ControlTemplate

        控件的 ControlTemplate 用于定义控件的外观。 每个控件都有一个 ControlTemplate 属性的默认模板。 该模板将控件的视觉呈现与控件的功能关联起来。 每个控件都有默认的Template。

        通常在 XAML 文件的 Resources 部分中将模板声明为资源。 与其他所有资源一样,范围规则在此也适用。

        控件模板比样式复杂得多。 这是因为控件模板重写了整个控件的视觉外观,而样式只是将属性更改应用于现有控件。 但是,控件模板是通过设置 ControlTemplate 属性来应用的,因此可以使用样式来定义或设置模板。

TemplateBinding、Binding、Trigger、ContentPresenter、ItemPresenter;在Style或ResourceDictionary中定义

触发器Trigger

        WPF 的 Trigger 是一种用于定义和管理 XAML 资源的触发器,"它可以根据不同的条件或事件来改变控件的属性或行为。以下是触发器的类型

        基本触发器(Trigger):这种触发器是根据控件自身的依赖属性的值来触发的,例如,当鼠标移动到按钮上时,改变按钮的背景色。

        数据触发器(DataTrigger):这种触发器是根据绑定的数据的值来触发的例如,当绑定的数据为真时,显示一个图标。
        事件触发器(EventTrigger):这种触发器是根据控件的路由事件来触发的例如,当按钮被点击时,播放一个动画。
        多条件触发器(MultiTrigger、MultiDataTrigger):这种触发器是根据多个条件的组合来触发的,例如,当控件的属性和绑定的数据同时满足某些值时改变控件的样式。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值