2011-05-10 98 views

回答

-1

我现在没有任何示例,但我可以引用您可能有所帮助的链接。

UIElement是大多数具有可视外观并且可以在Silverlight中处理基本输入的对象的基类。

FrameworkElement为参与Silverlight布局的对象提供了一个通用API的框架。 FrameworkElement还定义了与Silverlight中的数据绑定,对象树和对象生命周期特征区域相关的API。

那么你会得到什么额外的功能?请参阅http://forums.silverlight.net/p/205863/482651.aspx

19

This is a good page for learning about WPF Architecture,此答案仅适用于WPF。如果您有时间,请查看UIElementFrameworkElement部分,以及其他部分。下面是从链接页面解释为什么2级存在报价:

的话题在这一点上,WPF的“核心”功能 - 在PresentationCore组装实现的功能,一直是关注的焦点。在构建WPF时,基础部分之间的清晰分离(如与Measure和Arrange的布局合同)和框架部分(如Grid的特定布局的实现)是理想的结果。我们的目标是在堆栈中提供一个可扩展性较低的点,以便外部开发人员在需要时创建自己的框架。

总之,UIElement知道如何绘制自己(因为它们是从Visual派生的)。他们还可以通过提供虚拟方法如OnPreviewMouseDownOnMouseDown以及部分layout system通过实施MeasureArrange来使用routed events system

FrameworkElement s通过实施UIElement中定义的一些虚拟方法来扩展布局系统。它们提供了一种设置布局属性的一致方式,例如Margin属性和MinWidth属性。此外,可以设置样式,并且可以参加data binding

在回答您的问题时,如果您需要FrameworkElement添加的任何额外功能,例如您需要更容易使用的样式,绑定或布局系统,然后从中派生出来。否则,从UIElement推导出来,因为使用FrameworkElement会产生轻微的开销。

此外,你应该看看在Control类(从FrameworkElement派生),这些提供的功能,例如Templating有用的新图层和属性,如Padding

熟悉inheritance hierarchy也是一个好主意,您可能想从其他类中派生出来(尽管可能不会比Visual更高)。

+0

我不认为从UIElement继承是一个非常广泛的场景。大多数时候用户都希望从FrameworkElement派生出来,因为他们迟早会需要UIElement缺少的DataContext属性.... – Fazi 2016-04-11 13:20:32

相关问题