日期:2014-05-17  浏览次数:20983 次

WPF,请问依赖项属性的功能
一个摘自http://www.cnblogs.com/xiongpq/archive/2010/06/29/1767905.html的依赖项属性的例子:

public static DependencyProperty TextProperty =
       DependencyProperty.Register("Text", //属性名称
       typeof(string), //属性类型
       typeof(TestDependencyPropertyWindow), //该属性所有者,即将该属性注册到那个类上
       new PropertyMetadata("")); //属性默认值
        
public string Text
{
   get { return (string)GetValue(TextProperty); }
   set { SetValue(TextProperty, value); }
}


关于依赖项属性的注册、定义,大概懂了。
我想问的是,对于上面那个例子而言,WPF的依赖项属性的功能体现在哪里啊?它哪些地方体现出了不同于普通的.NET属性的特殊功能的呢?或者你可以举个简单的例子来说明依赖项属性的特殊功能,谢谢

------解决方案--------------------
简单来说,依赖属性是脱离了普通对象的,可以随便“注入”监视的值。这就好象是把原本放在你的对象内部的属性,拿出去离散地在一个内存数据库里统一管理。

在XAML风格的软件开发技术中,底层大量需要双向绑定支持,因此需要这种统一地“注入”式的数据管理模式。
------解决方案--------------------
比如说你编写一个叫做 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家族了是吧
------解决方案--------------------
引用:
??

最近咋这么多 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有时候就像是大众菜谱,其实很少人看菜谱而成为高级厨师的。高级的厨师往往对“一把盐、一点点酱”掌握于心,而那些在大众菜谱上则往往都是泛泛而谈。
------解决方案--------------------
引用:
??

最近咋这么多 u010xxxx 滴贴子,怎么csdn也开始流行 组团提问了,呵呵,n年前玩传奇,一个矿洞都是"xx工作室001号矿工",感情这里也流行u010家族了是吧

是csdn的注册搞怪,把会员名隐藏,显示ID,u的意思是uid,后面是ID号。
------解决方案--------------------
依赖
这个中文词读懂没有,读懂了我们就不解释了

如果是弄不明白这就google这几个“AOP 属性注入 解依赖”。虽然说你搜到肯定不是什么WPF资料,但是恰恰解释了你的疑问
------解决方案--------------------
至于你说要什么例子什么体现什么依赖属性的特殊功能,对不起,这个没有。