Почему мое прикрепленное свойство отображается в дизайнере Blend, а не в VS2010? - PullRequest
2 голосов
/ 08 декабря 2011

У меня есть прикрепленное свойство, и я регистрирую его у дизайнера, используя сборку во время разработки.Я использую атрибут AttachedPropertyBrowsableForTypeAttribute, чтобы свойство отображалось при выделении TextBox.

Свойство хорошо отображается в Expression Blend 4, но не отображается в Visual Studio 2010 SP1.

Expression Blend

Visual Studio

Кто-нибудь знает, почему он не будет отображаться в Visual Studio?Вы можете скачать тестовый проект, демонстрирующий проблему, здесь: Тестовый проект

Спасибо!

1 Ответ

1 голос
/ 09 декабря 2011

Короткий ответ - действительно, потому что дизайнер Cider - полная чушь.Вот более длинный ответ:

Из блога Microsoft:

Следует иметь в виду, что одно из требований для отображения прикрепленных свойств в конструктореявляется то, что тип-владелец должен быть загружен дизайнером.Это происходит всякий раз, когда дизайнер обращается к типу, потому что он находится в источнике XAML или является зависимостью элемента, загруженного из источника XAML.

Таким образом, проблема заключается в том, что разработчик Cider заботится только о типах, которые имеютуже был загружен.Вы можете увидеть пример этого, изменив содержащую Grid на StackPanel: вложенные свойства Grid.Row и Grid.Column исчезнут из списка свойств TextBox в Visual Studio.Поверхность дизайна Blend более прощающая и распознает ваш тип.Кроме того, Blend покорно отображает Grid.IsSharedSizeScope (в свойствах макета) даже при использовании StackPanel.

Глядя на то, как Microsoft использует и поддерживает вложенные свойства, они, похоже, предпочитают использовать их в контейнерах макетов.Например, есть AttachedPropertyBrowsableForChildrenAttribute .Это так, что вы можете делать такие вещи, как show Canvas.Left для детей элемента Canvas.У меня сложилось впечатление, что они не в полной мере учли, как большинство людей на самом деле сегодня используют присоединенные свойства (функциональность прикреплена к стороне объекта по сравнению с тем, что функциональность течет вниз от родителя).

...