2011-05-10 2 views

ответ

-1

У меня сейчас нет примеров, но я могу ссылаться на ссылки, которые могут помочь.

UIElement - базовый класс для большинства объектов, которые имеют внешний вид и могут обрабатывать основной вход в Silverlight.

FrameworkElement обеспечивает структуру общих API-интерфейсов для объектов, которые участвуют в макете Silverlight. FrameworkElement также определяет API-интерфейсы, связанные с областями функций привязки данных, дерева объектов и объектов в Silverlight.

Итак, какие дополнительные возможности вы получаете? См. http://forums.silverlight.net/p/205863/482651.aspx

19

This is a good page for learning about WPF Architecture, и этот ответ применим только к WPF. Ознакомьтесь с разделами UIElement и FrameworkElement, а также остальными, если у вас есть время. Вот цитата из связанной страницы, объясняющая, почему существуют 2 уровня:

К этому моменту в центре внимания были основные функции WPF - функции, реализованные в сборке PresentationCore. При построении WPF было желательным результатом четкое разделение между основополагающими элементами (например, контракт на макет с помощью Measure and Arrange) и фреймворками (например, реализация определенного макета, такого как Grid). Цель состояла в том, чтобы обеспечить в точке стека точку расширяемости, которая позволяла бы внешним разработчикам создавать свои собственные фреймворки, если это необходимо.

Одним словом, UIElement s умеет рисовать себя (потому что они получены из Визуального). Они также могут использовать routed events system, предоставляя виртуальные методы, такие как OnPreviewMouseDown и OnMouseDown, и часть layout system путем реализации Measure и Arrange.

FrameworkElement s расширяют систему компоновки, реализуя некоторые из виртуальных методов, определенных в UIElement. Они обеспечивают последовательный способ настройки свойств компоновки, например. имущество Margin и собственность MinWidth. Кроме того, их можно стилизовать, и они могут принять участие в data binding.

В ответ на ваш вопрос, если вам нужны какие-либо дополнительные возможности, которые FrameworkElement добавить, например. вам нужны стили, привязки или система компоновки, которые проще в использовании, а затем извлекаются из них. В противном случае выведите UIElement, так как из-за использования FrameworkElement есть небольшие накладные расходы.

Кроме того, вы должны взглянуть на Control класс (производный от FrameworkElement), так как они обеспечивают полезные новые уровни функциональности, как Templating и свойства, как Padding.

Знакомство с inheritance hierarchy также является хорошей идеей, вы можете захотеть извлечь из нее другие классы (хотя, вероятно, не выше, чем в цепочке, чем Visual).

+0

Я не думаю, что унаследовать от UIElement очень широкий сценарий. В большинстве случаев пользователь захочет извлечь из FrameworkElement, потому что рано или поздно им понадобится свойство DataContext, которого не хватает UIElement .... – Fazi

Смежные вопросы