Почему Blend добавляет [d: LayoutOverrides = "Height"] и меня это должно волновать? - PullRequest
23 голосов
/ 11 сентября 2009

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

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

<Border d:LayoutOverrides="Height" />

Ответы [ 2 ]

31 голосов
/ 11 сентября 2009

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

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

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

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

2 голосов
/ 02 июля 2012

д: LayoutOverrides

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

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

...