WPF,请问依赖项属性的功能 简单来说,依赖属性是脱离了普通对象的,可以随便“注入”监视的值。这就好象是把原本放在你的对象内部的属性,拿出去离散地在一个内存数据库里统一管理。在XAML风格的软件开发技术中,底层大量需要双向绑定支持,因此需要这种统一地“注入”式的数据管理模式。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如说你编写一个叫做 ABC 的功能丰富的自定义控件,你会为它编写 Grid.Row 属性么?不会的。那么你在 XAML 中会为其实例声明 Grid.Row 属性么?会的!编译器在解析 XAML 里边的 <local:ABC .... Grid.Row="2" .... > 这种代码时,就会调用Grid类上的SetXXX方法public static void SetRow(UIElement element, int value){ if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(Grid.RowProperty, value);}你并不需要为你的ABC定义一个Grid.Row属性,而是Grid可以将这个值(也就是2)注入到你的这个ABC类型的控件实例。 ??最近咋这么多 u010xxxx 滴贴子,怎么csdn也开始流行 组团提问了,呵呵,n年前玩传奇,一个矿洞都是"xx工作室001号矿工",感情这里也流行u010家族了是吧 我个人的理解是:依赖项属性是对公共语言运行时 (CLR) 属性功能的扩展。XAML中设置属性: <Button Background="Red" Content="Button!"/>依赖项属性提供用来扩展属性功能的功能,包括:资源、数据绑定样式、动画、元数据重写、属性值继承、WPF设计器集成 (具体事例,可阅读msdn)其中,资源、数据绑定样式应该是比较常见的,反正我平时主要是用这两个功能说白了,就是属性设置的一种更高级的方法,是一种补充 准确的说明,还是参考msdn吧:http://msdn.microsoft.com/zh-cn/library/ms753192.aspx 呵呵,msdn有时候就像是大众菜谱,其实很少人看菜谱而成为高级厨师的。高级的厨师往往对“一把盐、一点点酱”掌握于心,而那些在大众菜谱上则往往都是泛泛而谈。 我已经看了些关于依赖项属性的资料了,不过,我就是想知道,对于上面的代码,依赖项属性不同于普通的.NET属性的特殊功能,在什么地方体现出来了呢?或者,你可以举个小例子,来说明下依赖项属性的特殊功能 是csdn的注册搞怪,把会员名隐藏,显示ID,u的意思是uid,后面是ID号。 我就是想知道,对于上面的代码,依赖项属性不同于普通的.NET属性的特殊功能,在什么地方体现出来了呢? 或者,你可以举个小例子,来说明下依赖项属性的特殊功能 依赖这个中文词读懂没有,读懂了我们就不解释了如果是弄不明白这就google这几个“AOP 属性注入 解依赖”。虽然说你搜到肯定不是什么WPF资料,但是恰恰解释了你的疑问 至于你说要什么例子什么体现什么依赖属性的特殊功能,对不起,这个没有。依赖属性和微软那个asp.net mvc一样只是学人家的东西,他木有啥本质上的特殊功能,他只能说是一种软件方法学,软件工程学的应用 你学会了XAML了么?美工也可以编写过去只有程序员才能编写的许多应用程序。可能你认为一堆“属性、模板”等等概念对于微软的ide或者wpf/silverlight是“天经地义”的,但是如果你想知道一点例子,其实我已经给你点到了方向。你可以去找更多的依赖属性证据。 msdn:看见msdn说什么没有,换成大白话就是“如果A的计算依赖与B的输入,那么如何在B更改的同时引发A的变动”,如果A类和B类是独立开发的,按照传统的方法开发,A和B就必须有明确的引用关系和消息通知(或者构造公用上下文对象,通过上下文对象协调管理)。而如果采用依赖项方式,你就可以直接采用注入方式你就可以直接把B类的某个属性挂接到B类的某个属性上---虽然微软内部仍然会有复杂的上下文通知,但是我们这些使用者则很简单所以,这里不存在什么依赖项属性的非常特殊功能,他没有什么特殊的地方,只是从使用上他比传统的代码要简化很多 依赖属性是为属性提供一个类型。比如WPF的动画系列方法,其中一个参数的类型是依赖属性,这样该方法不用关注是要让什么类产生动画,怎么产生动画,这种抽象用传统属性是没法实现的。 xaml编程中大量使用了binding,把某个控件的属性绑定到其它属性上,虽然支持普通属性的绑定(后台代码不支持普通属性的绑定),但是唯有依赖性属性可以提供双向通知,普通属性可以通过继承INotifyPropertyChanged接口来实现类似功能,一般用在DataGrid的绑定中。相比通过INotifyPropertyChanged接口提供通知,依赖项属性性能低(有人说性能高,那是错误认识)。除非必要情况,否则别定义实体类的属性为依赖项属性,实体类应该使用INotifyPropertyChanged接口来提供通知。依赖项属性的实现类似定义一个Dictnary,属性值的添加就是往Dictnary添加的过程,因此如果属性不是全部都用到的情况下,会节省内存消耗,但是实体类是所有属性都会用到,这种情况下使用依赖项属性反而会降低处理速度。而且Dictnary内容增大的同时,查找速度也会减慢,因此依赖项属性只适合用在自定义控件的属性上面,其它场合不适合。 set { SetValue(TextProperty, value); }到底是设置的什么东西的值呢,TextProperty?TextProperty是静态的啊、只读的啊 我已经让你google“AOP 属性注入 解依赖”了如果你看过就知道在net这块,分静态IL植入,和动态代理两块你看到的代码是一个故事,实际运行的代码又是另一个故事,语法糖之所以是语法糖的意思是,这是语法上的糖,而不是实际运行的代码 我突然想到一个例子。比如在一个页面上有大量的控件,为了分清楚代码结构,我们会采用用户控件或者自定义控件将代码分块。分块以后的控件分别都是独立的控件,但是作为画面整体,他们之间存在一定的联系,原本在winform中,需要通过消息传递或者参数调用的方式,比如 new child(parent) 创建子控件时将父控件带进去来调用父控件的函数。但是WPF的依赖属性,可以做到 A控件依赖B控件的某个属性,我们只需要建立对应关系,而必须考虑传递的过程。不知道我这样的理解是否正确? 请问Entity Framework支持SQL2000吗? 求 一SQL语句 怎样实现安装c#的打包好的程序并同时安装所有组件? 特殊舉表達式難題,有碰到過的朋友沒,急! 关于2.0里面的解压缩 急等!明天就要用了,请大家帮忙,C#中的XML解析!!! 请大家帮忙推荐一本C#数据库开发的好书,最好有C/S模式的介绍 elisa media center 的界面是怎么实现的? wpf webbrowser 调试程序时Exception message:"对象必须实现 IConvertible",是什么意思? 急急急急!!!C#实现UDP超时重传的问题?? DropDownList 控件绑定
{
if (element == null)
{
throw new ArgumentNullException("element");
}
element.SetValue(Grid.RowProperty, value);
}
你并不需要为你的ABC定义一个Grid.Row属性,而是Grid可以将这个值(也就是2)注入到你的这个ABC类型的控件实例。
XAML中设置属性: <Button Background="Red" Content="Button!"/>依赖项属性提供用来扩展属性功能的功能,包括:
资源、数据绑定样式、动画、元数据重写、属性值继承、WPF设计器集成 (具体事例,可阅读msdn)
其中,资源、数据绑定样式应该是比较常见的,反正我平时主要是用这两个功能
说白了,就是属性设置的一种更高级的方法,是一种补充
或者,你可以举个小例子,来说明下依赖项属性的特殊功能
或者,你可以举个小例子,来说明下依赖项属性的特殊功能
这个中文词读懂没有,读懂了我们就不解释了如果是弄不明白这就google这几个“AOP 属性注入 解依赖”。虽然说你搜到肯定不是什么WPF资料,但是恰恰解释了你的疑问
所以,这里不存在什么依赖项属性的非常特殊功能,他没有什么特殊的地方,只是从使用上他比传统的代码要简化很多
比如WPF的动画系列方法,其中一个参数的类型是依赖属性,这样该方法不用关注是要让什么类产生动画,怎么产生动画,这种抽象用传统属性是没法实现的。
相比通过INotifyPropertyChanged接口提供通知,依赖项属性性能低(有人说性能高,那是错误认识)。除非必要情况,否则别定义实体类的属性为依赖项属性,实体类应该使用INotifyPropertyChanged接口来提供通知。
依赖项属性的实现类似定义一个Dictnary,属性值的添加就是往Dictnary添加的过程,因此如果属性不是全部都用到的情况下,会节省内存消耗,但是实体类是所有属性都会用到,这种情况下使用依赖项属性反而会降低处理速度。而且Dictnary内容增大的同时,查找速度也会减慢,因此依赖项属性只适合用在自定义控件的属性上面,其它场合不适合。
比如在一个页面上有大量的控件,为了分清楚代码结构,我们会采用用户控件或者自定义控件将代码分块。
分块以后的控件分别都是独立的控件,但是作为画面整体,他们之间存在一定的联系,原本在winform中,需要通过消息传递或者参数调用的方式,比如 new child(parent) 创建子控件时将父控件带进去来调用父控件的函数。
但是WPF的依赖属性,可以做到 A控件依赖B控件的某个属性,我们只需要建立对应关系,而必须考虑传递的过程。不知道我这样的理解是否正确?