我什么时候应该在WPF中使用依赖属性?
它们是静态的,因此与使用.NET属性相比,我们在内存上节省了很多.在.NET属性上使用依赖项属性的其他好处是:1)不需要检查线程访问2)提示要包含的元素等...
所以我似乎总是应该在我使用WPF的项目中使用依赖属性?
也许对于帮助类的一些微不足道的属性来说,我可以摆脱.NET属性......
Nit*_*tin 18
依赖属性是一个广泛的概念,可以解释哪些页面可能需要编写几页.所以只是回答你的主要问题,在哪里使用Dependency属性
您知道该属性将成为绑定目标,即您正在创建用户控件/自定义控件并希望属性应该是绑定驱动的.
您想要自动属性更改通知(也是coerse和验证).
我们希望在样式,主题,父级或默认值中继承值.
在大多数情况下,不需要在Model或ViewModel层上创建属性作为依赖项属性,因为这对内存节省不会有太大帮助,因为我们在model/VM中定义的大多数属性将具有每个实例的值,因为它们将不断变化.解决依赖属性值本身就是一种负担,因此不建议不必要地依赖属性.
谢谢
Ben*_*hon 15
创建的主要原因DependencyProperty是当您编写自己的WPF控件时.
DependencyProperties可以用作绑定源和目标,并且可以设置动画.所有框架控件的属性都实现为DependencyProperty,这就是为什么你可以在XAML中进行强大的数据绑定.
但是在大多数情况下,就像使用MVVM模式一样,您不需要依赖属性,INotifyPropertyChanged就足够了.
小智 7

CLR属性与依赖属性
CLR属性直接从类的私有成员读取.类的Get()和Set()方法检索并存储属性的值.而当您设置依赖项属性的值时,它不会存储在对象的字段中,而是存储在基类DependencyObject提供的键和值的字典中.条目的键是属性的名称,值是您要设置的值.
依赖属性的优点减少内存消耗
Dependency Property仅在更改或修改属性时才存储该属性.因此,字段的大量内存是免费的.
属性值继承 这意味着如果没有为属性设置值,那么它将返回到继承树,直到获取值.
更改通知和数据绑定 每当属性更改其值时,它都会使用INotifyPropertyChange在Dependency Property中提供通知,并且还有助于数据绑定.
参与动画,样式和模板 依赖属性可以使用样式设置器设置动画,设置样式,甚至可以为控件提供模板.
CallBacks 每当更改属性时,您都可以调用回调.
资源 您可以为XAML中的依赖项属性定义定义资源.
覆盖元数据 您可以使用PropertyMetaData定义依赖项属性的某些行为.因此,从派生属性覆盖元数据将不需要您重新定义或重新实现整个属性定义.
主要区别在于,正常.NET属性的值是直接从类中的私有成员读取的,而DependencyProperty的值是在调用从DependencyObject继承的GetValue()方法时动态解析的.
设置依赖项属性的值时,它不会存储在对象的字段中,而是存储在基类DependencyObject提供的键和值的字典中.条目的键是属性的名称,值是您要设置的值.
依赖属性的优点是
请查看以下网址,了解有关魔术的更多详情
| 归档时间: |
|
| 查看次数: |
21615 次 |
| 最近记录: |