通常WPF中通过继承UserControl的来快速创建自定义控件,最近项目上需要设计一个卫星星图显示控件,最终效果如下图所示.完成过程中遇到了自定义集合依赖属性无法触发更新通知的问题,在此记录一下,方便有相同问题的朋友们可以快速解决,也希望有人能发现更好的解决办法. 为了完成目的,我写了下面一个SateChart自定义控件类, XAML代码如下: <UserControl x:Class="WpfApplication1.SateChart" xmlns="http:/…
WPF的依赖项属性 属性与事件是.NET抽象模型的核心部分.WPF使用了更高级的依赖项属性(Dependency Property)功能来替换原来.NET的属性,实现了更高效率的保存机制,还添加了附加功能,如属性变更通知以及强制回调.属性值继承(在逻辑树中向下传播默认属性值的能力)以及属性有效性验证等.同时,依赖项属性也是WPF许多重要功能的基础,包括动画.数据绑定以及样式. 依赖项属性的使用基础 使用依赖项属性包括三个部分,定义依赖项属性:注册依赖项属性以及添加属性包装器. 定义依赖项属性,使…
  原博客地址:http://www.cnblogs.com/DebugLZQ/archive/2012/11/30/2796021.html    DependencyObject和DependencyPorperty两个类是WPF属性系统的核心. 在WPF中,依赖对象的概念被DependencyObject类实现:依赖属性的概念则由DependencyPorperty类实现. 必须使用依赖对象作为依赖属性的宿主,二者结合起来,才能实现完整的Binding目标被数据所驱动.Dependency…
这些天来,对象似乎已经忙得晕头转向了.每个人都希望它们做这做那.Windows® Presentation Foundation (WPF) 应用程序中的典型对象会接到各种各样不同的请求:有要求绑定到数据的.有要求更改样式的.有要求从可见父项继承的,甚至还有要求来点动画让大家高兴一下的. 对象怎么才能建立起边界和优先级呢?WPF 的回答是一种称为依赖关系属性的功能.通过为 WPF 类提供结构化方法来响应由数据绑定.样式.继承和其他来源更改带来的变化,依赖关系属性已变得十分重要,其程度不亚于事件和…
本章学习依赖项属性,英文原文 Dependency Property,它是传统 .Net Framework 属性的扩展,是 WPF 的专属,但所幸使用起来和传统属性几乎一样.WPF 元素所提供的大多数属性都是依赖项属性. 1. 定义依赖项:只能为依赖对象添加依赖项属性,即 DependencyObject,WPF 中大部分元素都继承 DependencyObject .属性信息应该始终可用,并可能在多个对象间共享访问,因此必须将 Dependency Property 对象设置为与之关联的类的…
入门 首先创建一个依赖项属性 然后绑定父容器的DataContext到这个依赖项的实例 接着绑定子元素的属性到依赖项属性(注意Button的Content属性) 程序最终的运行结果:   说明 首先是定义表示属性的对象,一个依赖项属性的对象必然是DependencyProperty的实例 这个实例必须始终保持可用,所以这里定义为静态字段 根据约定,依赖项属性的字段名称使用Property结尾,上面例子使用的是NameProperty 依赖项属性实例的创建工作必须在使用之前完成,所以要么在定义的时…
from:http://blog.csdn.net/datoumimi/article/details/8033682 ps:环境限制,发的东西一长就会被拦截,所以删了一部分 UI软件中经常会用到大量的控件,而每一个控件都是一个对象,每一个类都会有大量的属性,如果没创建一个对象就将所有的属性都创建出来,无非会占用大量的内存,wpf使用依赖项属性来提升了性能. 查看任何一个控件的定义,以button为例,都会发现类内包含大量的依赖性属性定义,注意到其中DependencyProperty都是sta…
浅谈WPF依赖项属性 0. 引言 依赖项属性虽然在使用上和CLR属性一样,但是它是WPF特有的,不同于CLR属性.只是封装为我们常用CLR的属性,在语法使用上和CLR属性一样.WPF中一些功能:动画,属性绑定,样式等都是以依赖项属性为基础的.WPF中元素的属性大部分都是依赖项属性. 依赖项属性和CLR属性最主要的区别是:CLR属性是通过一个私有的字段来读取.而依赖项属性则是通过继承在DependencyObject的GetValue()和SetValue()方法动态的读取属性值. 就是说当设置一…
原文:如何在 WPF 中获取所有已经显式赋过值的依赖项属性 获取 WPF 的依赖项属性的值时,会依照优先级去各个级别获取.这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值的.有什么方法可以获取哪些属性被显式赋值过呢?如果是 CLR 属性,我们可以自己写判断条件,然而依赖项属性没有自己写判断条件的地方. 本文介绍如何获取以及显式赋值过的依赖项属性. 需要用到 DependencyObject.GetLocalValueEnumerator() 方法来获得一个可以遍历所有依赖项属性本地值.…
在前篇随笔<使用Vue-TreeSelect组件实现公司-部门-人员级联下拉列表的处理>中介绍了Vue-TreeSelect组件的使用,包括使用v-modal绑定值,normalizer 来映射属性处理,还有一个@input时间处理值变更的关联操作. 在常规的新增界面处理过程中,弹出的对话框是已经构建完成的了,所有界面元素已经渲染,因此能够正常解决级联问题的处理.但在编辑界面中,确无法保证界面渲染完成,导致无法级联更新的问题.我们这里再进一步探讨更新的问题:在使用Vue-TreeSelect组…
依赖属性相当于扩充了 WPF 标签的原有属性列表,并可以使用 WPF 的绑定功能,可谓是十分方便的:用户控件则相当于代码重用的一种方式:以上几点分开来还是比较好理解的,不过要用到MVVM 模式中,还是要探索一番的. 我们先新建一个用户控件(UC_FoodsPanel.xaml),里面放一个 StackPanel:           XHTML   <UserControl x:Class="Note.UC_FoodsPanel" xmlns="http://schem…
转:https://www.cnblogs.com/zhili/p/WPFDependencyProperty.html 一.引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己开始更新WPF系列.尽管最近看到一篇WPF技术是否老矣的文章,但是还是不能阻止我系统学习WPF.今天继续分享WPF中一个最重要的知识点——依赖属性. 二.依赖属性的全面解析 听到依赖属性,自然联想到C#中属性的概念.C#中属性是抽象模型的核心部分,而依赖属性是专门基于WPF创建的.在WPF库实现中,…
原文:WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.欢迎转载.使用.重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布.如有任何疑问,请与我联系(walter.lv@qq.com). https://blo…
除了将自己的中间件添加到ASP.NET MVC Core应用程序管道之外,您还可以使用自定义MVC过滤器属性来控制响应,并有选择地将它们应用于整个控制器或控制器操作. ASP.NET Core中常用的MVC过滤器之一是  ExceptionFilterAttribute,用于处理Wep API应用程序中的错误响应.它很容易实现,开发人员和我在ASP.NET Core中使用MVC过滤器属性所面临的问题是访问Startup.cs类中注入的组件.这些通常是配置,环境或日志记录. 通常依赖注入对象的一个…
WPF中依赖属性的值是是可以设置为可继承(Inherits)的,这种模式下,父节点的依赖属性会将其值传递给子节点.例如,数据绑定中经常使用的DataContextProperty: var host = new ContentControl();    var button = new Button();    host.Content = button; host.DataContext = Guid.NewGuid();    Contract.Assert(object.Equals(ho…
原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? 我向大家介绍一个用 依赖属性(DependencyProperty) 实现的方法. 关于依赖属性的介绍,请大家参考:http://msdn.microsoft.com/zh-cn/library/ms752914.aspx 首先我们看用户控件中如何定义这个依赖属性: 1.新建一个用户控件,命名为Im…
原文:在 WPF 中获取一个依赖对象的所有依赖项属性 本文介绍如何在 WPF 中获取一个依赖对象的所有依赖项属性. 本文内容 通过 WPF 标记获取 通过设计器专用方法获取 通过 WPF 标记获取 public static IEnumerable<DependencyProperty> EnumerateDependencyProperties(object element) { if (element is null) { throw new ArgumentNullException(n…
WPF升级了CLR的属性系统,加入了依赖属性和附加属性.依赖属性的使用有很多好处,其中有两点是我认为最为亮眼的: 1)节省内存的开销; 2)属性值可以通过Binding依赖于其它对象上,这就使得我的数据源一变动全部依赖于此数据源的依赖属性全部进行更新. 第二点开发过WPF或者SilverLight应用程序都能无比畅快地感受它带来的好处,而在节省内存这个亮点上我们也行未能深刻地感受它带来的心理上的爽快,本人试着简单地说明依赖属性到底是怎么样为我们节省内存的. 我们先来看看传统的CLR属性,先来定义…
一.CLR 属性 ​ 程序的本质是"数据+算法",或者说用算法来处理数据以期得到输出结果.在程序中,数据表现为各种各样的变量,算法则表现为各种各样的函数(操作符是函数的简记法). ​ 类的作用是把散落在程序中的变量和函数进行归档封装并控制它们的访问.被封装在类里的变量称为字段(Field),它表示的是类或实例的状态:被封装在类里的函数称为方法(Method),它表示类或实例的功能. ​ 字段(Field)被封装在实例里,要么能被外界访问(非 Private修饰),要么不能(使用 Pri…
回到目录 在对MongoDB进行封装后,对于Update更新对象里的集合属性时出现了一个现象,让人感到很恶心,人家更新前是个美丽的Array,但是更新之后集合对象变成了键值对,键是集合的类型名称,值是真实的数组值,哈哈,这个问题起初困扰了我很久,今天终于豁然开朗了,原来是Update方法的问题,呵呵! 看原来的值…
Form cnblogs 桂素伟 随着WPF的推广,不得不重新拾起WPF来,因为这块的产品越来越多. 只能跟着MSDN来学了,所以想是在这里记录下学习的过程和对知识的理解. 先从最基本的吧,依赖项属性是WPF中不同的地方,先了解一下它吧. “依赖项属性的用途在于提供一种方法来基于其他输入的值计算属性值”,这是官方的一句话,理解起来有点费劲.属性本身其实很简单,就是用来封装了字段的,本质上是两个访问器,来达到对字段值的读与写,以及从业务角度保护字段的业务有效性(因为大部分字段都有一定的业务含义,即…
Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR)属性的功能,这些服务通常统称为 WPF 属性系统.由 WPF 属性系统支持的属性称为依赖项属性. 这段是MSDN上对依赖属性(DependencyProperty)的描述.主要介绍了两个方面,WPF中提供了可用于扩展CLR属性的服务:被这个服务支持的属性称为依赖属性. 单看描述,云里雾里的,了解一个知识,首先要知道它产生的背景和为什么要有它,那么WPF引入依赖属…
出处:https://www.cnblogs.com/axzxs2001/archive/2010/04/25/1719857.html 随着WPF的推广,不得不重新拾起WPF来,因为这块的产品越来越多. 只能跟着MSDN来学了,所以想是在这里记录下学习的过程和对知识的理解. 先从最基本的吧,依赖项属性是WPF中不同的地方,先了解一下它吧. “依赖项属性的用途在于提供一种方法来基于其他输入的值计算属性值”,这是官方的一句话,理解起来有点费劲.属性本身其实很简单,就是用来封装了字段的,本质上是两个…
wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到…
在wpf中,定义集合属性时,字段可以使用“ObservableCollection<T>”定义,以保证数据改变时的自动通知功能:属性可以使用“ICollection”定义,保证属性的灵活性,且只读,保证属性的安全性:对属性值的更改可以通过“ICollection.Add”方法来实现.需要说明的是:属性始终指向“字段”(属性可以看做 指针 或 变量的引用:而字段才是真正的对象:属性指向“字段”),所以,表面上是属性在改变,而实际上是“字段”在变化. 通过打断点分析可知:“PieData”属性值的…
依赖属性;(dependency property)  它是专门针对WPF创建的,但是WPF库中的依赖项属性都使用普通的.NET属性过程进行了包装.从而可能通过常规的方式使用它们,即使使用他们的代码不理解WPF依赖项属性系统也是如此,使用旧技术包装新技术看起来有些奇怪,但这正是WPF能够改变基础组成部分,而不会扰乱.NET领域中其他部分的原因.三步:一:定义依赖项属性.public static readonly DependencyProperty MarginProperty;二:.在静态构…
原文:WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果   本以为Label也有TextChanged 事件,但在使用的时候却没找到,网友说Label的Content属性改变肯定是使用赋值操作,赋值的时候就可以对其进行相应的操作所以不需TextChanged 事件. 上MSDN查了一下,TextChanged 事件在TextBoxBase类中:而Label和TextBox的继承关系如下: Label: Syste…
这个章节主要讲解属性是什么,为什么会演变出依赖项属性,依赖属性的优势是什么.以及如何更好的使用属性和依赖项属性. 一.属性 属性是什么. 翻了好几本C#的书和微软的文档,我觉得对属性讲解比较好理解的就是<深入浅出WPF>这本书中关于属性的描述.照抄如下: 程序的本质是"数据+算法",用算法来处理数据以期得到输出结果.数据表现为各种各样的变量,算法表现为各种各样的函数.在面向对象的思维下即使有了类等数据结构,依然没有改变这个本质,类的作用只是把散落在程序中的变量和函数进行归档…
 参考资料: 一站式WPF--依赖属性(DependencyProperty)一 一站式WPF--依赖属性(DependencyProperty)二         依赖属性之我见: 这两篇文章介绍的了依赖属性的本质和由来,挺清晰的. 自我理解:依赖属性,说明有两个关系,依赖和属性. 依赖的由来: 在面向对象的世界里,属性大量存在,比如Button,就大约定义了70-80个属性来描述其状态.那么属性的不足又在哪里呢? 当然,所谓的不足,要针对具体环境来说.拿Button来讲,它的继承树是Butt…
问题:自定义控件的依赖项属性和VIewModel中的变量不能双向绑定 解决思路:对比.net源码 PresentationFramework  /   System.Windows.Controls 原因:定义依赖项属性时没有设置OnChanged方法 解决方法:初始化时绑定Changed方法 .net 源码如下: /// <summary> /// The DependencyProperty for the Content property. /// Flags: None /// Def…