WPF/Silverlight中的UIElement与FrameworkElement

Gre*_*ens 13 silverlight wpf frameworkelement uielement

我何时从衍生物中获取UIElementFrameworkElement考虑FrameworkElement继承UIElement.谁能举出现实生活中的例子?

mar*_*etz 22

这是学习WPF架构的好页面,这个答案仅适用于WPF.如果你有时间,请查看UIElementFrameworkElement部分,以及其余部分.以下是链接页面的引用,解释了为什么存在2个级别:

到目前为止,WPF的"核心"功能 - 在PresentationCore程序集中实现的功能一直是焦点.在构建WPF时,基础部分(如使用Measure和Arrange的布局合同)和框架部分(如Grid的特定布局的实现)之间的清晰分离是期望的结果.目标是在堆栈中提供一个低扩展点,允许外部开发人员在需要时创建自己的框架.

简而言之,UIElements知道如何绘制自己(因为它们是从Visual派生的).他们还可以通过实现和提供类似的虚拟方法和布局系统的一部分来使用路由事件系统.OnPreviewMouseDownOnMouseDownMeasureArrange

FrameworkElement通过实现一些定义的虚拟方法来扩展布局系统UIElement.它们提供了一种设置布局属性的一致方法,例如Margin属性和MinWidth属性.此外,可以设置样式,他们可以参与数据绑定.

在回答你的问题时,如果你需要增加任何额外的能力FrameworkElement,例如你需要更容易使用的样式,装订或布局系统,那么就从它们派生出来.否则,源自UIElement使用时的轻微开销FrameworkElement.

此外,您应该查看Control类(派生自FrameworkElement),因为它们提供了有用的新功能层,如模板和属性等Padding.

熟悉继承层次结构也是一个好主意,您可能希望从其中的其他类派生(尽管可能不比链中的更高Visual).


Pee*_*its -3

我现在没有任何示例,但我可以向您推荐可能有帮助的链接。

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

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

那么您可以获得哪些额外功能呢?请参阅http://forums.silverlight.net/p/205863/482651.aspx