Когда я получаю от UIElement
и FrameworkElement
с учетом FrameworkElement
наследует UIElement
. Может ли кто-нибудь привести примеры реальной жизни?UIElement vs FrameworkElement в WPF/Silverlight
ответ
У меня сейчас нет примеров, но я могу ссылаться на ссылки, которые могут помочь.
UIElement - базовый класс для большинства объектов, которые имеют внешний вид и могут обрабатывать основной вход в Silverlight.
FrameworkElement обеспечивает структуру общих API-интерфейсов для объектов, которые участвуют в макете Silverlight. FrameworkElement также определяет API-интерфейсы, связанные с областями функций привязки данных, дерева объектов и объектов в Silverlight.
Итак, какие дополнительные возможности вы получаете? См. 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 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
).
- 1. Копирующая паста UIElement (FrameworkElement)
- 2. WPF FrameworkElement Parent и перемещение UIElement
- 3. получить координаты прямоугольника рамки FrameworkElement
- 4. VisualStateManager.GoToState для FrameworkElement
- 5. Прикрепить ScrollViewer к элементу FrameworkElement?
- 6. Silverlight: конвертировать UIElement в SVG
- 7. WPF FrameworkElement
- 8. TabItem UIElement OnPropertyChanged
- 9. Может ли кто-нибудь сказать мне разницу между FrameworkElement obj = sender как FrameworkElement и FrameworkElement obj = (FrameworkElement) someobject
- 10. Каковы основные свойства UIElement в WPF?
- 11. Как добраться до позиции UIElement относительно UIElement
- 12. Добавление Grid/FrameworkElement в ContainerVisual
- 13. Получение UIElement - как получить фокус
- 14. Как деинициализировать элемент FrameworkElement?
- 15. Детей FrameworkElement не отображаются
- 16. Пользовательского FrameworkElement дизайн
- 17. WPF Custom FrameworkElement/IScrollInfo
- 18. Назначить FrameworkElement шаблону
- 19. Как загрузить FrameworkElement
- 20. Изменение угла в UIElement
- 21. UIElement в слоистых модах
- 22. Как скопировать элемент FrameworkElement, включая переполненный контент?
- 23. Как измерить UIElement, созданный на иерархическом datatemplate
- 24. Связывание реле Команды Прямоугольник Vs MenuItem (CanExecute() не вызывается)
- 25. UIElement нуля при использовании пользовательского DependencyProperty
- 26. WPF - FrameworkElement - Перечислить все подделки?
- 27. является элементом FrameworkElement или нет?
- 28. Есть ли способ установить ширину и высоту UIElement?
- 29. Выберите WPF UIElement в FlowDocument
- 30. Преобразование управления Devexpress в UIElement
Я не думаю, что унаследовать от UIElement очень широкий сценарий. В большинстве случаев пользователь захочет извлечь из FrameworkElement, потому что рано или поздно им понадобится свойство DataContext, которого не хватает UIElement .... – Fazi