sivlerlight系统类 关系大观
DependencyObject :
UIElement : 里面的属性 Opacity Visibilty Projection RenderTransform Clip ...
FrameworkElement : 里面的属性 Height Width HorizintalAlgnment DataContext ....
Control : 里面的属性 Background Foreground BroderBrush ....
UIElement 里面的属性 :都是和显示展现有关的,所以都这些属性放在UIElement中,作为基类的一个类。
FrameworkElement 里面的属性,主要关心的是它的Layout方式的,以及和外面节点的关系的。
比如FrameworkElement 里面的width 和 height 改变了宽度和高度后,可能会影响grid里面的其它元素,所以就把这些属性放在Framework中,而不像UIElement里面的属性改变后只是自己变化而已。所以把这些属性分离出来,作为稍微高层一点的FrameworkElement。 (因为他跟Visual Tree 的 Organization 有关系的)
FrameworkElement 我们是不需要去怎么操作,我们会有一些比较更高一级的应用 ,我们需要有一些是否让你去操作IsEnable,或者background是怎么样的,我们封装成一个Control 类中。比如有一些界面元素有另外一些特征的话,我们可以再封装,比如这个Shape,Panel Textblock等也是继承于FrameworkElement。。