XAML: В чем функциональная разница между следующими обозначениями? - PullRequest
2 голосов
/ 23 декабря 2009

XAML : Какова функциональная разница между следующими обозначениями?

Есть ли причина, по которой я не должен использовать первый метод для свойств?

<Setter Property="Shape.Stroke" TargetName="circle" Value="#FF3C7FB1"/>

<Setter Property="Shape.Stroke" TargetName="arrow">
  <Setter.Value>
    <SolidColorBrush>#FF222222</SolidColorBrush>
  </Setter.Value>
</Setter>

Итак, я не забываю добавлять теги после того, как репутация достаточно высока:

Метка: расширенный

РЕДАКТИРОВАТЬ 0: я использую шаблоны по умолчанию для создания пользовательских элементов управления и заметил, что последний макет, как Microsoft делает это. Это для ускорения разбора или просто по соглашению?

РЕДАКТИРОВАТЬ 1: Я понимаю, что преобразователи вводятся в эксплуатацию при использовании прежней нотации, поэтому я предполагаю, что мой вопрос звучит так: это проблема с производительностью и, если да, есть ли какие-то тесты?

1 Ответ

3 голосов
/ 26 декабря 2009

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

Не должно быть проблем с производительностью, если только вы не вызываете сеттер миллион раз в секунду.

...