Почему Blend добавляет [d: LayoutOverrides = Height] и стоит ли мне это волновать?

Довольно часто, возвращаясь к Visual Studio из Expression Blend 3, я вижу, что Blend услужливо добавил свойство «d: LayoutOverrides» в мой XAML. Я вырос в среде дизайнеров ASP.NET и, естественно, не доверяю всему, что не напечатаю сам, поэтому удаляю их, как только вижу.

Я знаю, что свойства "d:" предназначены только для разработчиков и не влияют на время выполнения, но может ли кто-нибудь дать какое-либо представление о том, что делает это свойство и почему Blend так настойчиво, что я использую их во всей разметке?

<Border d:LayoutOverrides="Height" />

person Brad Tutterow    schedule 11.09.2009    source источник


Ответы (2)


Это просто так, чтобы Blend знал, как отображать ваш XAML в режиме разработки. В частности, если у вас есть гибкий макет, который растягивается, чтобы заполнить свой контейнер, для Blend нет четкого способа узнать, какой высоты должен быть ваш дизайн; LayoutOverrides определяет это.

Эти записи настроек LayoutOverride добавляются, когда вы (или другой человек, использующий Blend) вручную изменяете размер элементов в области конструктора. Если вы видите их повсюду в своем коде (например, в элементе Border):

  1. Обычно вы можете удалить их без каких-либо заметных последствий
  2. Вы можете посмотреть, как вы используете Blend - в частности, вы должны установить размер родительского контейнера до подходящего размера (UserControl / LayoutRoot), а затем установить размеры дочерних элементов на основе гибкого макета - например, отступы и поля или * размеры

Обратите внимание, что игнорируемые атрибуты Blend удаляются во время компиляции и не влияют на производительность вашего приложения. Поэтому, хотя вы можете захотеть удалить их, чтобы улучшить читаемость кода, они не влияют на работу вашего приложения.

person Jon Galloway    schedule 11.09.2009
comment
@jon Я все еще не понимаю! Я полностью понимаю, что делает d: DesignWidth = 500, но LayoutOverrides на самом деле не указывает никаких размеров, так что именно он делает? Вы сказали, что LayoutOverrides это определяет, но что определяет? Если я изменяю размер компонента в Blend, он просто устанавливает высоту, а не d: LayoutOverrides или d: DesignHeight. Кажется, что это очень распространено в TextBlock, но я все еще озадачен, поскольку я не вижу, чтобы он так или иначе влиял на что-либо в Blend: - / - person Simon_Weaver; 09.10.2011

d: LayoutOverrides

Если для свойства установлено фиксированное значение во время выполнения, но вы хотите переопределить его во время разработки, вы можете использовать атрибут d: LayoutOverrides. Все свойства, которые следует игнорировать во время разработки, могут быть перечислены через точку с запятой.

(источник: http://wpftutorial.net/DesigntimeVsRuntime.html)

person George Birbilis    schedule 02.07.2012