什么情况下使用依赖属性?实体类的属性都设计成依赖属性吗?

freehooke 2011-08-31 08:02:35
看了刘铁猛的《深入浅出WPF》对依赖属性有了一定的了解,但不知在何种情况下使用它
...全文
184 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
freehooke 2011-09-01
  • 打赏
  • 举报
回复

呵呵,谢谢你的回复。
我是编程老人新手,从.NET出现开始我就接触了,汗颜的是现在水平很差。编程不是我的工作,只是爱好的一部分,所以问题比较菜鸟些
看了刘铁猛先生的书,自己认为对WPF的概念有了比较深刻的认识,我觉得书写的还是不错的,但对于如何用WPF来做项目就不知道了,书的篇幅较小也没讲这方面的。我现在好比学会了许多单词,确不会造句。现在想按照自己的设想做一个涉及到生活各方面的“大系统”,所以想用WPF来做。从书中了解到依赖属性的强大,所以想用它,而看到像Family.Show这样的程序中实体类都实现了INotifyPropertyChanged接口,书中说到如果从DependencyObject类继承,就具有同样的功能,我想是不是实体类这做,就可与界面进行数据交互了
请仁兄不吝赐教
[Quote=引用 5 楼 sp1234 的回复:]



悲剧,看某些人的书原来真的容易悲剧啊!

DependencyPtoperty跟DependencyObject有很大关系,就好象一个数据库中的数据表、数据记录、数据字段的关系(类型就相当于数据表、DependencyObject就相当于记录、而它的DependencyPtoperty就相……
[/Quote]
freehooke 2011-09-01
  • 打赏
  • 举报
回复
谢谢你的回复。
关于你这个观念我是不赞同的。首先这本书我感觉非常好,至少他将一些基本的概念和用法讲得非常清楚。WPF Unsheald我也有,但没看明白,可能与我的资质有关,但我相信接着我会看懂此书,就是因为有了现在的基础。我提出这个问题与此书的目标是不一致的——如前说过,这本书是讲述一些基本概念为目的的。另一方面,我对国人是充满信心的,我的的角度来看,我觉得我们在这方面已经有了长足的进步。前面说到过,我是“老人新手”,对编程技术的了解比较早,因为职业的关系和浅尝辄止的态度,学了很多却没有成果,但对于这门技术的我还是有些认知的。我感觉现在国内的技术水平比以前强多了——虽然没有大师(我们各方面好像都没有,包括国学),但已经有了许多不错的工程师,而且现在好的作品也越来越多了。
所以,我感谢仁兄的教导,但不认同你的第一句话

[Quote=引用 9 楼 fallincloud 的回复:]

是中国人写的书 我就不说什么了

你怎么也该把<WPF Unsheald> 读了再来说啊


依赖属性什么时候用?极端点只在ViewModel或者是View层才能使用,Model层的数据实体 应该使用轻量级的CLR属性
[/Quote]
freehooke 2011-09-01
  • 打赏
  • 举报
回复
谢谢sp1234的训导,已经有点明白你的意思了
fallincloud 2011-09-01
  • 打赏
  • 举报
回复
是中国人写的书 我就不说什么了

你怎么也该把<WPF Unsheald> 读了再来说啊


依赖属性什么时候用?极端点只在ViewModel或者是View层才能使用,Model层的数据实体 应该使用轻量级的CLR属性
  • 打赏
  • 举报
回复
首先你要了解一个对象(类)有那么庞大身躯,其目的是为了什么。假设你要用你自己东西与它看齐(继承于它的模型),那么就靠首先考虑面向对象的基本原则,例如你想表达:你的实体本来就是一个DependencyObject,也就是说你在写代码之前、考虑你的测试目的时就明确地规划好用将来要你的实体带入原来的“刘铁猛先生给你展现的那个概念”的实际流程中去测试。

你不能为了省得写一点代码,而胡乱继承一个看似很时髦、很多功能的概念。假设你的实体并不是DependencyObject,那么就不要继承它。不能因为个别操作有一点像、可以借用一点,就滥用继承。否则你就会在进一步使用、扩展、深入时尝到滥用继承为思路和沟通带来的恶果。就好象一个汽车它自己不是建筑物,仅仅因为它自己也有一些管道,如果你硬说一辆汽车也是一幢建筑物,那么你在真正全面使用汽车时就会遇到很多尴尬,你需要处处向别人说明“汽车在哪些方面不是建筑物”,这就自相矛盾了。

你可以在自己的某些程序流程中调用某些DependencyObject(例如所有界面控件都是),同时也调用自己的实体。但是你自己的实体就是进行简单、轻量的通讯的,它不过是一些简单数据,它本身不是DependencyObject,在设计对象(类)之间的关系时不要随随便便继承那些不相干的概念。
  • 打赏
  • 举报
回复
不同的类型成员属性之间有关联或者依赖时就可以用到
像常见的主订单-订单明细(1:N)就可以用到,通过主订单直接取得关联的订单明细(延迟加载),进一步简化实体集的调用与筛选

  • 打赏
  • 举报
回复
[Quote=引用 2 楼 freehooke 的回复:]
在设计实体类的时候是不是应该都设计成依赖属性呢
[/Quote]

悲剧,看某些人的书原来真的容易悲剧啊!

DependencyPtoperty跟DependencyObject有很大关系,就好象一个数据库中的数据表、数据记录、数据字段的关系(类型就相当于数据表、DependencyObject就相当于记录、而它的DependencyPtoperty就相当于字段值)。或者就好象是一个Excel工作表一样。

DependencyObject作为一个系统统一维护的内存数据库,可以进行查找,可以统一管理用户定义事件,可以统一支持在XAML属性中定义的继承关系,可以统一支持属性改变的事件路由处理,可以统一支持在界面容器中初始化和卸载的异步处理过程,可以统一支持界面视图树上的一些级联修改事件、可以统一支持动画制作和播放,可以统一支持Dispatcher机制等等。而DependencyProperty是作为DependencyObject的组成部分(就好象数据库中每一个字段值是每一个记录的组成部分),所以是不可分的。

你的实体要它干嘛?
  • 打赏
  • 举报
回复
实体跟DependencyObject、DependencyProperty有什么关系呢?

这还要问你的设计师,也许他有什么特殊的考虑,或者纠结(例如狂热地喜欢什么、冷漠地讨厌什么)。
ustbwuyi 2011-08-31
  • 打赏
  • 举报
回复
不用,WPF里面用到得多一点而已,需要才用。
freehooke 2011-08-31
  • 打赏
  • 举报
回复
在设计实体类的时候是不是应该都设计成依赖属性呢
threenewbee 2011-08-31
  • 打赏
  • 举报
回复
数据关联,延迟加载。

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧