大家都是什么情况下使用依赖项属性?依赖项属性好处?

影游 2014-05-11 10:28:19
比如:
(1)我将Lable的Text属性绑定到了我自定义的属性上?为什么我的属性变了,label值没有变, 绑定到依赖项属性才可以...

(2)如果将DataGrid值绑定要一个OberverbleCollection结构上,完成数据绑定,这个和依赖项属性有关系吗??

(3)如果将dataGrid绑定为一个Table,貌似也可以动态更新数据吧??? 不确定...

(4)何时使用InotifyEventChange接口??和依赖项属性有关系吗??


如上四个例子,都和依赖项属性有关系吗??最近有点学糊涂了...
...全文
260 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhtmldivcss 2014-05-24
  • 打赏
  • 举报
回复
引用 6 楼 boyingyou 的回复:
上面引用这句话什么意思? 什么是EF 和 ORM?
EF: Entity Framework ORM:Object Relational Mapping
影游 2014-05-24
  • 打赏
  • 举报
回复
引用 4 楼 xhtmldivcss 的回复:
基本都是绑定经过EF的ORM后的对象。 [/Quote]简单讲,无关。
上面引用这句话什么意思? 什么是EF 和 ORM?
影游 2014-05-24
  • 打赏
  • 举报
回复
引用 4 楼 xhtmldivcss 的回复:
其实关于Dependency Property(DP)我也有好多想不明白的。
引用
我将Lable的Text属性绑定到了我自定义的属性上?为什么我的属性变了,label值没有变, 绑定到依赖项属性才可以...
Label的Text属性就是个DP。绑定讲究一个Source和Target,Target必须是DP,Source可以是DP或普通CLR属性。你的属性所属的类实现INotifyPropetyChanged接口,在属性的setter里通知自己变更,界面上的Label.Text就可以随着变化了。但这种实现和DP向外界通知自己更新的实现方式貌似不是一回事。 [Quote] 如果将DataGrid值绑定要一个OberverbleCollection结构上,完成数据绑定,这个和依赖项属性有关系吗?? [Quote] 我不知道有什么关系,但DataGrid的ItemsSourcen属性是个DP,上面说了Binding Target必须是个DP。OberservableCollection实现的INotifyColellectionChanged从数据绑定角度看用处很大。但这里还是和DP没什么大关系。 [Quote] 如果将dataGrid绑定为一个Table,貌似也可以动态更新数据吧??? 不确定... [/Quote] 如果你说的Table是指早期.net经常看到的DataTable,那么似乎在silverlight已经很少看到DataGrid绑定DataTable的动作了。基本都是绑定经过EF的ORM后的对象。 [Quote] 何时使用InotifyEventChange接口??和依赖项属性有关系吗?? [/Quote]简单讲,无关。
回答的好认真,谢谢...
xhtmldivcss 2014-05-14
  • 打赏
  • 举报
回复
其实关于Dependency Property(DP)我也有好多想不明白的。
引用
我将Lable的Text属性绑定到了我自定义的属性上?为什么我的属性变了,label值没有变, 绑定到依赖项属性才可以...
Label的Text属性就是个DP。绑定讲究一个Source和Target,Target必须是DP,Source可以是DP或普通CLR属性。你的属性所属的类实现INotifyPropetyChanged接口,在属性的setter里通知自己变更,界面上的Label.Text就可以随着变化了。但这种实现和DP向外界通知自己更新的实现方式貌似不是一回事。 [Quote] 如果将DataGrid值绑定要一个OberverbleCollection结构上,完成数据绑定,这个和依赖项属性有关系吗?? [Quote] 我不知道有什么关系,但DataGrid的ItemsSourcen属性是个DP,上面说了Binding Target必须是个DP。OberservableCollection实现的INotifyColellectionChanged从数据绑定角度看用处很大。但这里还是和DP没什么大关系。 [Quote] 如果将dataGrid绑定为一个Table,貌似也可以动态更新数据吧??? 不确定... [/Quote] 如果你说的Table是指早期.net经常看到的DataTable,那么似乎在silverlight已经很少看到DataGrid绑定DataTable的动作了。基本都是绑定经过EF的ORM后的对象。 [Quote] 何时使用InotifyEventChange接口??和依赖项属性有关系吗?? [/Quote]简单讲,无关。
Bonjour-你好 2014-05-11
  • 打赏
  • 举报
回复
1、我猜,你的自定义属性,要么不是依赖属性,要么属性的类没有实现INotifyPropertyChanged接口 2、ObservableCollection类实现了INotifyCollectionChanged和INotifyPropertyChanged接口 3、“dataGrid绑定为一个Table”不太明白你的意思。 4、我平时的机关是,当属性不是依赖项属性,但需要在属性值改变时在界面处有所变化时,就需要INotifyPropertyChanged接口。要么用依赖属性,要么实现INotifyPropertyChanged接口。
Bonjour-你好 2014-05-11
  • 打赏
  • 举报
回复
要说“原理”,用我自己所理解的,就是依赖项属性它自己内置一个变化通知机制,通过在属性元数据注册一个回调使你获取到属性变化的通知,因此在绑定后就能更新界面了。 如果你是要在“代码”层面上理解原理,这个我也不懂,因为未曾看过DependencyProperty或DependencyObject的代码内容。
影游 2014-05-11
  • 打赏
  • 举报
回复
引用 1 楼 KumaPower 的回复:
1、我猜,你的自定义属性,要么不是依赖属性,要么属性的类没有实现INotifyPropertyChanged接口 2、ObservableCollection类实现了INotifyCollectionChanged和INotifyPropertyChanged接口 3、“dataGrid绑定为一个Table”不太明白你的意思。 4、我平时的机关是,当属性不是依赖项属性,但需要在属性值改变时在界面处有所变化时,就需要INotifyPropertyChanged接口。要么用依赖属性,要么实现INotifyPropertyChanged接口。
你回答的很正确,第一条我说的自定义属性确实不是依赖项属性,确实如你说的那样. 但我想知道原理,为什么绑定了依赖项属性后就可以自动更新界面显示了呢?这是为什么???

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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