Я работаю над пользовательским интерфейсом проекта WPF. Моя любимая ссылка во время xaml'ing (помимо stackoverflow :)) на данный момент - это «Windows Presentation Foundation Unleashed» Адама Натана. Он дает следующий совет относительно шаблонов управления: «Вместо использования ContentControl внутри шаблона управления вы должны использовать элемент ContentPresenter с более легким весом».Элементы с более легким весом - как измерить/узнать вес элемента?
Разработчики, с которыми я работаю, часто также расскажут мне использовать самые легкие элементы, которые я, возможно, могу, во всем, что я делаю, - что я полностью понимаю.
Вопрос (как наивно!) Заключается в следующем: как узнать, что такое относительные «веса» разных элементов? Есть очевидные вещи, такие как RichTextBox и TextBox. Но как я могу выяснить, например, является ли StackPanel лучше, чем Grid, в ситуации, когда либо можно выполнить эту работу?
Является ли визуальное дерево элемента/управления хорошим индикатором «веса»? На что еще я могу смотреть?
Заранее спасибо.
Hi Abe Во-первых, спасибо. Из вашего ответа: «... вы можете проверить иерархию наследования: ContentPresenter происходит из FrameworkElement, а ContentControl - из Control». Итак, что-то, что происходит от элемента управления, всегда будет «тяжелее», чем что-то, что происходит от say FrameworkElement.Panel, потому что у Controls есть шаблоны управления, которые включают в себя загрузку функциональности? И: «Сетка - самый гибкий, и поэтому имеет самый сложный алгоритм компоновки». i.e гибкость обычно является хорошим показателем веса. (Я здесь вслушиваюсь, так что поправьте меня, если я ошибаюсь!) – cfouche
Да, я согласен со всеми вашими разъяснениями. Я бы сказал, что шаблоны Controls на самом деле делают их более тяжелыми.Поскольку вы можете переопределить визуальное дерево элемента управления как глобальный стиль, как автор управления, вы бы не представляли, сколько визуальных эффектов вы бы добавили ... –