考虑到FrameworkElement
继承UIElement
,我何时从UIElement
和FrameworkElement
派生出来。任何人都可以提供真实生活的例子吗WPF/Silverlight中的UIElement vs FrameworkElement
回答
我现在没有任何示例,但我可以引用您可能有所帮助的链接。
UIElement是大多数具有可视外观并且可以在Silverlight中处理基本输入的对象的基类。
FrameworkElement为参与Silverlight布局的对象提供了一个通用API的框架。 FrameworkElement还定义了与Silverlight中的数据绑定,对象树和对象生命周期特征区域相关的API。
那么你会得到什么额外的功能?请参阅http://forums.silverlight.net/p/205863/482651.aspx
This is a good page for learning about WPF Architecture,此答案仅适用于WPF。如果您有时间,请查看UIElement
和FrameworkElement
部分,以及其他部分。下面是从链接页面解释为什么2级存在报价:
的话题在这一点上,WPF的“核心”功能 - 在PresentationCore组装实现的功能,一直是关注的焦点。在构建WPF时,基础部分之间的清晰分离(如与Measure和Arrange的布局合同)和框架部分(如Grid的特定布局的实现)是理想的结果。我们的目标是在堆栈中提供一个可扩展性较低的点,以便外部开发人员在需要时创建自己的框架。
总之,UIElement
知道如何绘制自己(因为它们是从Visual派生的)。他们还可以通过提供虚拟方法如OnPreviewMouseDown
和OnMouseDown
以及部分layout system通过实施Measure
和Arrange
来使用routed events system。
FrameworkElement
s通过实施UIElement
中定义的一些虚拟方法来扩展布局系统。它们提供了一种设置布局属性的一致方式,例如Margin
属性和MinWidth
属性。此外,可以设置样式,并且可以参加data binding。
在回答您的问题时,如果您需要FrameworkElement
添加的任何额外功能,例如您需要更容易使用的样式,绑定或布局系统,然后从中派生出来。否则,从UIElement
推导出来,因为使用FrameworkElement
会产生轻微的开销。
此外,你应该看看在Control
类(从FrameworkElement
派生),这些提供的功能,例如Templating有用的新图层和属性,如Padding
。
熟悉inheritance hierarchy也是一个好主意,您可能想从其他类中派生出来(尽管可能不会比Visual
更高)。
- 1. UIElement vs FrameworkElement
- 2. WPF FrameworkElement父和移动UIElement
- 3. VisualStateManager.GoToState for FrameworkElement
- 4. 获取FrameworkElement边界矩形的坐标
- 5. 将ScrollViewer附加到FrameworkElement?
- 6. 谁能告诉我FrameworkElement obj = sender作为FrameworkElement和FrameworkElement obj =(FrameworkElement)之间的差异someobject
- 7. WPF样式使用的UIElement
- 8. 绘图的FrameworkElement的
- 9. 如何获得UIElement的家长?
- 10. WPF中的几何HitTest UIElement
- 11. 是不是呈现的FrameworkElement?
- 12. 定义扩展FrameworkElement的Windows Phone中
- 13. 的UIElement零使用自定义的DependencyProperty
- 14. WPF自定义FrameworkElement/IScrollInfo
- 15. C#UIElement LostTouchCapture OnLostTouchCapture
- 16. 在wpf中查找uielement的中心
- 17. 绑定到UiElement的UWP Relativepanel不起作用,像RelativePanel with propertie = UiElement
- 18. WPF:在另一个UIElement重叠的UIElement上触发mouseenter
- 19. 的Silverlight 3DROTATE +上的UIElement将
- 20. WPF:当一个FrameworkElement与其他FrameworkElement接触时如何获取事件
- 21. 在ASP.NET中生成WPF UIElement的位图
- 22. 访问列表中的UIElement.Properties <UIElement>
- 23. LINQ删除SilverLight中的UIElement儿童
- 24. 使用UIElement作为WPF中的剪辑
- 25. 从XAML引用ViewModel中的UIElement
- 26. 非的UIElement类提高RoutedEvents
- 27. 如何获取UIElement的DataContext?
- 28. WPF:DataBinding自定义UIElement的PointCollection
- 29. 后访问的UIElement在WPF
- 30. 块到UIElement转换
我不认为从UIElement继承是一个非常广泛的场景。大多数时候用户都希望从FrameworkElement派生出来,因为他们迟早会需要UIElement缺少的DataContext属性.... – Fazi 2016-04-11 13:20:32