网站详情页用什么软件做如何制作自己的网站模版

news/2025/9/26 13:01:30/文章来源:
网站详情页用什么软件做,如何制作自己的网站模版,简阳seo排名优化课程,常州做网站的 武进理解依赖属性 依赖属性支持的特征包括#xff1a;动画、数据绑定、样式。由WPF元素暴露的属性大部分都是依赖属性。依赖属性和常规属性的使用方法相同。 WPF设计了依赖属性支持其特有的动态特性#xff0c;并且不干扰其他系统的.net代码。 定义依赖属性 创造一个依赖属性的语…理解依赖属性 依赖属性支持的特征包括动画、数据绑定、样式。由WPF元素暴露的属性大部分都是依赖属性。依赖属性和常规属性的使用方法相同。 WPF设计了依赖属性支持其特有的动态特性并且不干扰其他系统的.net代码。 定义依赖属性 创造一个依赖属性的语法完全不同于创造一个普通的.NET属性。 第一步是定义一个代表属性的对象。这是DependencyProperty类的一个实例。关于你属性的信息需要一直是可用的甚至可能在类之间共享常见在WPF元素中。因此你的DependencyProperty对象必须被定义为相关类的一个静态字段。 例如FrameworkElement类定义了一个Margin属性。Margin被所有元素共享是一个依赖属性 public class FrameworkElement: UIElement, ... {public static readonly DependencyProperty MarginProperty;... } 根据命名约定定义依赖属性的字段名字是正常属性加上单词Property后缀。那样你能区分依赖属性定义和实际属性的名字。字段使用readonly关键字这意味着它只能在FrameworkElement类的静态构造函数中设置如何设置见下节。 注册依赖属性 下一步是注册你的依赖属性。因为要在使用属性之前完成注册必须在相关类的一个静态构造函数中执行它。 不能直接实例化DependencyProperty对象因为DependencyProperty类没有公开的构造函数。代替一个DependencyObject实例只能使用静态的DependencyProperty.Register()方法被创造。DependencyProperty对象被创造之后不能再修改因为所有的DependencyProperty成员是只读的。代替它们的值必须作为Register()方法的参数被提供。 下面例子显示FrameworkElement类的Margin属性是如何被注册的 static FrameworkElement() {var metadata new FrameworkPropertyMetadata(new Thickness(), FrameworkPropertyMetadataOptions.AffectsMeasure);MarginProperty DependencyProperty.Register(Margin,typeof(Thickness), typeof(FrameworkElement), metadata,new ValidateValueCallback(FrameworkElement.IsMarginValid));... } 注册一个依赖属性包括二步。首先你创造一个FrameworkPropertyMetadata对象指明希望使用依赖属性的什么服务诸如支持数据绑定动画和日志。其次依靠调用DependencyProperty.Register()静态方法注册属性。这时你负责提供一些关键成分 属性名称 属性的数据类型 属性所在类的类型可选附带有属性设置的FrameworkPropertyMetadata对象可选执行属性验证的回调 两个可选属性值得研究。FrameworkPropertyMetadata的详细描述见95页。 包装依赖属性 创造依赖属性的最后一步是用一个传统.NET属性包装它。WPF属性使用的是定义在DependencyObject基类的GetValue()和SetValue()方法。 public Thickness Margin {set { SetValue(MarginProperty, value); }get { return (Thickness)GetValue(MarginProperty); } } 当你创造属性包装时你应该仅调用SetValue()和GetValue()如在前例中。你不应该添加任何额外的代码验证值引起事件等等。那是因为另外的特征可能旁路属性包装直接调用SetValue()和GetValue()。一个例子是在运行时当一个编译XAML文件被解析时。SetValue()和GetValue()都是公开的。 验证输入值应使用DependencyProperty.ValidateValueCallback。 引发事件应使用FrameworkPropertyMetadata.PropertyChangedCallback 。 现在可以使用属性了 myElement.Margin new Thickness(5); 之后可能希望移除局部值设置仿佛你从未设置它。依靠从DependencyObject继承的ClearValue()方法。 myElement.ClearValue(FrameworkElement.MarginProperty); 使用依赖属性 依赖属性支持两个关键的行为改变通知和动态值求解。 改变通知 如果你希望对一个属性的改变作出反应你有二个选择—创造一个绑定或写一个触发器。但是依赖属性没有提供响应属性值改变的事件。 动态值求解 依赖属性因动态值求解的行为而得名。一个依赖属性依赖于多个属性提供者每个提供者带有它自己的优先级。当你从一个属性值取回一个值时WPF属性系统经历一系列步骤求得最终值。首先它通过考虑下列因素决定属性的基值。优先级从最低的到最高排列最下面的赢 默认值由FrameworkPropertyMetadata对象设置 继承的值如果FrameworkPropertyMetadata.Inherits标记被设置并且一个值已经应用到某个祖先元素 主题样式值工程样式值本地值使用代码或标记直接设置的值基值不一定是最终的属性值WPF通过4个步骤求得属性值 基值 表达式数据绑定和资源动画 通过CoerceValueCallback修正值 共享依赖属性 一些类共享依赖属性即使他们有独立的类层次结构。例如TextBlock.FontFamily和Control.FontFamily都指向同一个依赖属性它实际上被定义在TextElement类中以及TextElement.FontFamilyProperty。TextElement类的静态构造函数注册属性但是TextBlock和Control类的静态构造函数简单地调用DependencyProperty.AddOwner()方法重用它 TextBlock.FontFamilyProperty TextElement.FontFamilyProperty.AddOwner(typeof(TextBlock)); 自定义类 副作用 附加依赖属性 附加属性是依赖属性并且它被WPF属性系统管理。区别是应用附加属性的类不是定义它的类。 为定义一个附加属性你使用RegisterAttached()方法而不是Register()。这是一个注册Grid.Row属性的例子 var metadata new FrameworkPropertyMetadata(0, new PropertyChangedCallback(Grid.OnCellAttachedPropertyChanged));Grid.RowProperty DependencyProperty.RegisterAttached(Row, typeof(int),typeof(Grid), metadata, new ValidateValueCallback(Grid.IsIntValueNotNegative)); 就像一个普通的依赖属性你能提供一个FrameworkPropertyMetadata对象和一个ValidateValueCallback。 当创造附加属性时你没有定义.NET属性包装。那是因为附加属性能被设置在任何依赖对象上。例如Grid.Row属性可能被设置在一个Grid对象上如果你有一内部嵌套另一个Grid的Grid或在另外的一些元素上。事实上即使元素不在一个Grid内和即使在你的元素树上不存在Grid对象Grid.Row属性也能被设置在那个元素上。 代替使用一个.NET属性包装附加属性要求能调用的一对静态方法去设置和获得属性值。这些方法使用熟悉的SetValue()和GetValue()方法从DependencyObject类继承。静态的方法应该被命名SetPropertyName()和GetPropertyName()。 这里是实现Grid.Row附加属性的静态方法 public static int GetRow(UIElement element) {if (element null){throw new ArgumentNullException();}return (int)element.GetValue(Grid.RowProperty); } public static void SetRow(UIElement element, int value) {if (element null){throw new ArgumentNullException();}element.SetValue(Grid.RowProperty, value); } 使用代码设置一个元素位于网格的第一行 Grid.SetRow(txtElement, 0); 可选地你能直接调用SetValue()或GetValue()方法旁路掉静态方法 txtElement.SetValue(Grid.RowProperty, 0); 属性验证 WPF提供两种方法阻止无效值 ValidateValueCallback这回调能接受或拒绝新值。通常这回调被用来捕获违反属性的约束明显错误。提供它作为DependencyProperty.Register()方法的参数。 CoerceValueCallback这回调能修改新值为更可接受的值。通常这回调被用来处理被设置在同一对象的依赖属性值之间的冲突。这些值可能单独是有效的但是当应用在一起时不一致。为使用这回调当创造FrameworkPropertyMetadata对象时提供它作为构造函数的参数此对象随后被传递到DependencyProperty.Register()方法。 这里是当应用程序试图设置一个依赖属性时所有的部件如何起作用 首先CoerceValueCallback方法有机会修改提供值通常为使它与其它属性一致或返回DependencyProperty.UnsetValue这完全拒绝改变。 其次ValidateValueCallback被引发。这方法返回真接受一个值作为有效或返回假拒绝它。不同于CoerceValueCallbackValidateValueCallback不访问设置属性的实际对象这意味着你不能检查其它的属性值。 最后如果先前两个阶段都成功了PropertyChangedCallback被触发。这时你能引发事件去通知其它类。 Validation回调 相当于正常属性的set部分中的验证。 其签名为接受一个object输入参数返回布尔值。返回值为真表示接受为假表示拒绝。 private static bool IsMarginValid(object value) {Thickness thickness1 (Thickness) value;return thickness1.IsValid(true, false, true, false); } 有一个限制它是一个静态方法不能访问正被验证的对象不能使用对象中的其他属性。 Coercion回调 用于验证互相关联的属性 private static object CoerceMaximum(DependencyObject d, object value) {RangeBase base1 (RangeBase)d;if (((double) value) base1.Minimum){return base1.Minimum;}return value; }转载于:https://www.cnblogs.com/cuishengli/archive/2013/06/01/3112538.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PySide6 之鼠标事件写字板

一、效果图二、示例代码from PySide6.QtWidgets import * from PySide6.QtCore import * from PySide6.QtGui import * import sysclass ImageWidget(QWidget):pass鼠标控制图片缩放、拖动,鼠标滚动放大、缩小 class …

深入解析:golang基础语法(三)常量、指针、别名、关键字、运算符、字符串类型转换

深入解析:golang基础语法(三)常量、指针、别名、关键字、运算符、字符串类型转换pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…

烟台网站建设方案成都市建设局官方网站

目录 一. 空属性null 二. 默认值default 三. 列描述comment 四. 填充零zerofill 五. 主键primary key 六. 自增长auto_increment 七. 唯一键unique 八. 外键foreign key 一. 空属性null 对于表中的数据,如果在进行插入的时候不显示地给定值,那么…

单B细胞技术如何实现兔单抗高通量高特异制备

单B细胞技术如何实现兔单抗高通量高特异制备 在单克隆抗体(mAb)研发领域,兔源单抗以其高亲和力和高特异性备受关注。传统的杂交瘤技术虽然成熟,但周期长、效率低,而且抗体多样性有限。近年来,单B细胞技术的出现,…

HP激光墨盒换墨粉

墨盒分区加墨是先清理使用过的墨粉,在加入要使用的墨粉。 清理使用过的墨粉 可拆开使用过的墨粉的墨盒去清理,也可用不拆下清理。打开红色框的盖子,到出里面的墨粉,最好用袋子装好清理,防止粉尘到处飞。 拆下来清…

实用指南:Golang学习笔记: 常用标准库

实用指南:Golang学习笔记: 常用标准库pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

AI论文速读 | 当大语言模型遇上时间序列:大语言模型能否执行多步时间序列推理与推断 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

unordered_map性能被吊打!我用基数树让内存池性能暴涨几十倍的秘密

哈喽,大家好,我是小康! 今天要和大家聊一个特别有意思的话题——基数树。 说实话,我第一次听到这个名词的时候,内心是懵逼的。基数?树?这玩意儿到底是啥? 直到有一天,我在研究TCMalloc内存池源码的时候,发现…

网站备案后可以更换域名吗网红营销优势

Title 题目 Automated anomaly-aware 3D segmentation of bones and cartilages in kneeMR images from the Osteoarthritis Initiative 来自骨关节炎计划的膝关节MR图像的自动异常感知3D骨骼和软骨分割 Background 背景 近年来,多个机器学习算法被提出用于图像…

asp网站配置伪静态重庆注册公司核名在哪个网站

上次提到的开机自启动的配置,获得了LD的称赞,然而LD的要求,都是“既得陇复望蜀”的,他又期望我们能实现openGauss安装的“自动化”,于是尝试了下用shell脚本部署,附件中的脚本实测有效,openEule…

详细介绍:《 Linux 点滴漫谈: 一 》开源之路:Linux 的历史、演进与未来趋势

详细介绍:《 Linux 点滴漫谈: 一 》开源之路:Linux 的历史、演进与未来趋势pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fa…

深入解析:TENGJUN“二合一(2.5MM+3.5MM)”耳机插座:JA10-BPD051-A;参数与材质说明

深入解析:TENGJUN“二合一(2.5MM+3.5MM)”耳机插座:JA10-BPD051-A;参数与材质说明pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

龙凤网站建设云聚达长春网站建设哪里好

基于飞桨paddle波士顿房价预测练习模型测试代码 导入基础库 #paddle:飞桨的主库,paddle 根目录下保留了常用API的别名,当前包括:paddle.tensor、paddle.framework、paddle.device目录下的所有API; import paddle #Lin…

CentOS 9服务器版 部署Zabbix7.0 server端 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:Apache 生产环境操作与 LAMP 搭建指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

JAVA第一天

Markdown 学习 标题 +空格=一级标题 +空格=二级标题 ......... 字体 粗体 斜体 粗斜体 删除 引用第一天学习分割线图片超链接 我的世界 列表表格ctrl+t 代码

什么网站做简历模板关键词排名怎么快速上去

http://answers.unity3d.com/questions/34328/terrain-with-multiple-splat-textures-how-can-i-det.html转载于:https://www.cnblogs.com/klobohyz/archive/2012/10/09/2716627.html

c 网站开发需要什么软件东莞出行政策有变了

文章目录 前言一、哈希结构体?二、增删差3、遍历,清空,计数 前言 哈希表在头文件“utash.h”中已经有了,只需简单学习用法即可 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很…

自己做免费网站的视频参考消息电子版手机版

处理 HttpApplication 的事件HttpApplication 提供了基于事件的扩展机制,允许程序员借助于处理管道中的事件进行处理过程扩展。由于 HttpApplication 对象是由 ASP.NET 基础架构来创建和维护的,那么,如何才能获取这个对象引用,以便…

东莞营销型网站建设流程网站速成

1.类型转换 1.1 int(x):转化为一个整数&#xff0c;只能转换由纯数字组成的字符串 float->int 浮点型强转整形会去掉小数点后面的数&#xff0c;只保留整数部分 a 1.2 print(type(a)) #<class float> b int(a) print(type(b)) #<class int>print(int…