Как можно измерить / узнать вес элемента? - PullRequest
2 голосов
/ 10 марта 2010

Я работаю над пользовательским интерфейсом проекта WPF. Моя любимая ссылка во время XAML'а - Адама Натана "Windows Presentation Foundation Unleashed". Он дает следующий совет относительно шаблонов элементов управления: «Вместо использования ContentControl внутри шаблона элемента управления следует использовать элемент ContentPresenter с более легким весом».

Разработчики, с которыми я работаю, часто также говорят мне, чтобы они использовали самые легкие элементы, какие только возможно, во всем, что я делаю в XAML - что я полностью понимаю.

Как мне узнать, каковы относительные "веса" различных элементов? Есть очевидные вещи, такие как RichTextBox против TextBox. Но как, например, выяснить, лучше ли StackPanel, чем Grid, в ситуации, когда любой из них может выполнить эту работу?

Является ли визуальное дерево элемента / элемента управления хорошим индикатором «веса»? На что еще можно посмотреть?

1 Ответ

1 голос
/ 11 марта 2010

Когда дело касается таких вещей, как ContentPresenter или ContentControl, вы можете проверить иерархию наследования: ContentPresenter является производным от FrameworkElement, тогда как ContentControl происходит от Control.

Что касается панелей, в основном Grid имеет наиболее сложную логику компоновки (поэтому она наиболее гибкая), поэтому в целом любая другая панель будет лучше, если она сможет выполнить свою работу. Если вы хотите конкретное руководство по сложности панелей, я бы перечислил их в следующем порядке от наименее до наиболее сложного:

  1. UniformGrid - дочерний размер даже не используется для вычисления экстента панели
  2. StackPanel - используется только одно измерение дочернего размера
  3. WrapPanel - Аналогично StackPanel, но немного сложнее, так как необходимо запомнить самый широкий элемент столбца / строки.
  4. DockPanel - Поскольку только один элемент может занимать все оставшееся пространство, я бы сказал, что он легче, чем Grid.
  5. Сетка - Самый гибкий и, следовательно, самый сложный алгоритм компоновки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...