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

WPF,请问Binding标记扩展
书上说:所有的标记扩展类都继承自MarkupExtension类,该类提供了一个ProvideValue方法,此方法会提供在计算标记扩展之后返回的对象。在引用一个扩展类时,可以省略后面的Extension单词。

那说明,Binding标记扩展是由BindingExpression类定义的吧

那下面这句:
<TextBlock FontSize="{Binding ElementName=slider1, Path=Value}" />

到底是创建了一个Binding类的实例还是一个bindingexpression类的实例呢?而bindingexpression类是没有
ElementName和Path属性的

------解决方案--------------------
它们之间属于一种继承关系,也就是说,Binding子类可能扩展了ElementName和Path这些属性。基类没有,但是子类可以新增这些属性。
------解决方案--------------------
那说明,Binding标记扩展是由BindingExpression类定义的吧

为什么这么说?

你看看MSDN不就知道了。http://msdn.microsoft.com/zh-cn/library/vstudio/system.windows.data.binding.aspx


继承层次结构
System.Object
  System.Windows.Markup.MarkupExtension
    System.Windows.Data.BindingBase
      System.Windows.Data.Binding
------解决方案--------------------
Binding -> BindingBase -> MarkupExtension

BindingExpression -> BindingExpressionBase -> Expression

这2个好像没啥关系吧。
------解决方案--------------------
引用:
Quote: 引用:

那说明,Binding标记扩展是由BindingExpression类定义的吧

为什么这么说?

你看看MSDN不就知道了。http://msdn.microsoft.com/zh-cn/library/vstudio/system.windows.data.binding.aspx


继承层次结构
System.Object
  System.Windows.Markup.MarkupExtension
    System.Windows.Data.BindingBase
      System.Windows.Data.Binding

那如此说来,Binding标记扩展是由Binding类定义的吧,那BindingExpression类又是做什么用的呢?它是以Expression结尾的,多像标记扩展类 啊


你发帖是把BindingExpression的msdn链接都贴上去了,可以去看看。

扩展是extension
expression是表达式

英语呀……