WPF 使用附加属性增加控件属性

使用附加属性增加控件属性,使得这个附加属性在使用的时候没有局限性,可以在任何的控件中使用它来增加所需要的属性,使得控件的属性使用起来非常灵活 一、自定义附加属性1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741...

一站式WPF--依赖属性(DependencyProperty)二

 书接上文,前篇文章介绍了依赖属性的原理和实现了一个简单的DependencyProperty(DP),这篇文章主要探讨一下如何使用DP以及有哪些需要注意的地方。   依赖属性是由DependencyObject来使用的,那么一个典型的使用场景是什么样呢?  一个简单的使用如下:1:publicclassSimpleDO:DependencyObject2:{3:  publicstaticreadonlyDependencyPropertyIsActiveProperty=4:    DependencyProperty.Register("IsActive",typeof(bool),typeof(SimpleDO),5:       newPropertyMetadata((bool)false));6: 7:  publicboolIsActive8:  {9:    get{return(bool)GetValue(IsActiveProperty);}10set{SetValue(IsActiveProperty,value);}11: }12:}&nb...

WPF 附加属性的用法 (一)

 publicclassMDCTest{publicstaticDependencyPropertyMouseDoubleClickCommandProperty=DependencyProperty.RegisterAttached("MouseDoubleClick",typeof(ICommand),typeof(MDCTest),newFrameworkPropertyMetadata(null,newPropertyChangedCallback(MouseDoubleClickChanged)));publicstaticvoidSetMouseDoubleClick(DependencyObjecttarget,ICommandvalue){target.SetValue(MDCTest.MouseDoubleClickCommandProperty,value);}publicstaticICommandGetMouseDoubleClick(DependencyObjecttarget){return(ICommand)target.GetValue(MDC...

WPF整理-为控件添加自定义附加属性

附加属性,大家都不陌生,最常见的是Canvas.Left/Canvas.Top,类似的也有Grid.Row/Grid.Column等附加属性。举个最常见的例子<Canvas><EllipseFill="Red"Width="100"Height="60"Canvas.Left="56"Canvas.Top="98"/></Canvas>需要说明的是并不是所有的附加属性都是元素放进去后才会有附加效果,上面的例子只是刚好是这种错觉的巧合情况,Grid.Row也属于这种巧合。还是举个反例来说明<Canvas><ButtonContent="Copy"ToolTip="CopytheSelectedItems"ToolTipService.ShowOnDisabled="True"/></Canvas>ToolTipService类是一个静态类,和Button风马牛不相及,两者之间没有任何关系。这就是关于附加属性DebugLZQ认为需要说明的地方。1.我们有这样的一个XAML<Canvas><Ellips...

WPF的依赖属性

一、什么是依赖属性依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。将所有的属性都设置为依赖属性并不总是正确的解决方案,具体取决于其应用场景。有时,使用私有字段实现属性的典型方法便能满足要求。MSDN中给出了下面几种应用依赖属性的场景:1.希望可在样式中设置属性。2.希望属性支持数据绑定。3.希望可使用动态资源引用设置属性。4.希望从元素树中的父元素自动继承属性值。5.希望属性可进行动画处理。6.希望属性系统在属性系统、环境或用户执行的操作或者读取并使用样式更改了属性以前的值时报告。7.希望使用已建立的、WPF进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。二、依赖属性的特点1、属性变更通知无论什么时候,只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器,它可以在属性值改变的时候,执行一系列自定义的动作,而不需要更改任何其他的代码来...
IT猿 IT猿·2020-03-28

WPF MVVM(Caliburn.Micro) 数据验证

书接前文前文中仅是WPF验证中的一种,我们暂且称之为View端的验证(因为其验证规是写在Xaml文件中的)。还有一种我们称之为Model端验证,Model通过继承IDataErrorInfo接口来实现,这个还没研究透,后面补上。WPFMVVMModel端验证-待续今天的主要内容是MVVM下的数据验证,主要使用View端验证,需求如下:1.对姓名的非空验证,验证错误控件后边应该有感叹号提示,感叹号的ToolTip应该有具体错误的信息2.对姓名的非空验证不通过的话,确定 按钮应该禁用对于1,控件本身验证不通过会有一个红色的边框,后面的感叹号我们用Adorner来实现,且看这篇WPFAdorner+附加属性实现控件友好提示不好处理的是2,为什么呢?在Mvvm中,我们故意分离View和VM,View只负责显示,VM负责各种交互逻辑,VM应该感知不到View的存在,而各种验证(不管你是VIew端验证还是Model端验证)产生的Validation.ErrorEvent冒泡事件只会沿着逻辑树上走,我们就是需要监听这个事件,有了这个事件我们的VM才能知道验证不通过,从而修改属性来达到禁用按...

WPF中的数据验证

WPF的Binding使得数据能够在数据源和目标之间流通,在数据流通的中间,便能够对数据做一些处理。数据转换和数据验证便是在数据从源到目标or从目标到源的时候对数据验证和转换。ValidationRule验证规则WPF中提供了一个抽象类ValidationRule,我们自定义的验证规则都需要继承它,然后实现它的抽象方法Validate,该方法需要返回一个ValidationResult对象来表示验证结果。举个例子,一个验证数字的规则(输入的只能是数字)publicclassNumberValidationRule:ValidationRule{publicoverrideValidationResultValidate(objectvalue,CultureInfocultureInfo){if(Regex.IsMatch(value.ToString(),"^[0-9]+$")){returnnewValidationResult(true,null);}else{returnnewValidationResult(false,"请输入数字");}}}其中ValidationRul...

关于WPF验证

引言    数据验证在任何用户界面程序中都是不可缺少的一部分.在WPF中,数据验证更是和绑定紧紧联系在一起,下面简单介绍MVVM模式下常用的几种验证方式.错误信息显示   在介绍数据验证之前,有必要介绍一下如何显示错误信息.方式很简单,定义一个样式触发器,将错误信息和 ToolTip绑定,如下:<StyleTargetType="TextBox"><Style.Triggers><TriggerProperty="Validation.HasError"Value="true"><SetterProperty="ToolTip"Value="{BindingRelativeSource={RelativeSourceSelf},Path=(Validation.Errors)[0].ErrorContent}"/></Trigger></Style.Triggers></Style>  Validates...
IT猿 IT猿·2020-03-28

正确理解WPF中的TemplatedParent

(注:LogicalTree中文称为逻辑树,VisualTree中文称为可视化树或者视觉树,由于名称不是很统一,文中统一用英文名称代表两个概念,况且VisualTreeHelper和LogicalTreeHelper也是WPF中提供的类名称) 众所周知WPF中的LogicalTree是逻辑上定义的元素层次树,而实际上显示在屏幕上的元素层次树是VisualTree,VisualTree是LogicalTree节点扩充后的的产物。因此从VisualTree的角度上看(VisualTree当然是完整的一个),LogicalTree被分割成一段一段的,而这些段与段的连接点,就是和TemplatedParent有关。 这个概念在WPF类模型中是FrameworkElement.TemplatedParent属性。WPF中的模板(数据模板和控件模板)都可以扩展LogicalTree,那么模板所修饰的对象就是模板中元素的TemplatedParent,此时模板元素和修饰对象都会出现在VisualTree中,但模板元素肯定不属于被修饰元素的LogicalTree,但是模板有自己的L...

图标下载

个人认为非常好的一个网站: http://www.easyicon.net/ ...
IT猿 IT猿·2020-03-28

转--Android中自定义字体的实现方法

  1、Android系统默认支持三种字体,分别为:“sans”,“serif”,“monospace2、在Android中可以引入其他字体。复制代码代码如下:<?xmlversion="1.0"encoding="utf-8"?><TableLayoutxmlns:Android="http://schemas.android.com/apk/res/android"Android:layout_width="fill_parent"Android:layout_height="fill_parent"> <TableRow><TextViewAndroid:layout_marginRight="4px"Android:text="sans:"Android:textSize="20sp"></TextView><!--使用默认的sans字体--><TextViewAndroid:id="@+id/sans"Andr...

-webkit-text-size-adjust 处理设置字体<12px

-webkit-text-size-adjust1、当样式表里font-size<12px时,中文版chrome浏览器里字体显示仍为12px,这时可以用  html{-webkit-text-size-adjust:none;}2、-webkit-text-size-adjust放在body上会导致页面缩放失效3、body会继承定义在html的样式4、用-webkit-text-size-adjust不要定义成可继承的或全局的...

bootstrap-Glyphicons 字体图标

使用的方法:1引入 font-awesome.css文件2fonts文件夹 Bootstrap假定所有的图标字体文件全部位于 ../fonts/ 目录内(可以在font-awesome.css修改fonts的路径)3通过class使用图标字体例如:  <spanclass="glyphiconglyphicon-search"></span>(使用图表的字体标签必须是空标签,不能与别的插件混合使用)...

字体的设置 REM EM PX

px1一般设置页面的字体使用px2优点:字体设置比较稳定和精确3缺点:他会修改用户浏览器中的字体大小EM相对于父元素的字体大小,字体大小不确定,容易混乱,“em”是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险。REM而rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值,,在根元素中设置多大的字体浏览器的兼容性rem是CSS3新引进来的一个度量单位,支持的浏览器有:MozillaFirefox3.6+、AppleSafari5+、GoogleChrome、IE9+和Opera11+。...

LINUX CentOS7安装字体

2017年12月26日17:06:07 q260996583 阅读数:4866更多个人分类: linux  JAVA画图时常用到Font类对象这样的对象依赖于本地的字段。新装的linux没有安装字段库,和相应的字体。 1、fc-list查看字体库发现没有安装2、yum-y install fontconfig安装3、安装好后/usr/share目录下多两个目录fonts和fontconfig4、首先在/usr/shared/fonts目录下新建一个目录chinese 5、到C:WindowsFonts目录下上传你需要的字体到/usr/shared/fonts/chinese目录下6、修改chinese权限chmod -R 755 /usr/share/fonts/chinese7、接下来需要安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件,输入命令:yum-y install ttmkfdir8、最后一步就是修改...
首页上一页...3637383940下一页尾页