Извините за то, что выкалываете такую старую нить, но я чувствую, что это того стоит. Недавно я столкнулся с ситуацией, которая показывает, что x:Type
отличается от TypeName-as-String
.
По моему опыту -
x:Type
учитывает сильное имя или версию сборки, но не TypeName-as-String
.
Я объяснил свой сценарий и другие подробности в моем блоге здесь -
Значение указания типа AncestorType с x: Введите RelativeSourceBinding
Кроме того, есть также разница в том, как WPF вводит тип. Для x:Type
используется TypeExtension
, тогда как для TypeName-as-String
FrameworkElementFactory
используется.
В соответствии с MSDN - x : Расширение разметки типа
Свойства типа, которые поддерживают Typename-as-String
WPF поддерживает методы, которые позволяют указывать значение некоторых свойств типа Тип без необходимости использование расширения расширений
blockquote>x:Type
. Вместо этого вы можете указать значение как строку, которая называет тип. Примерами этого являютсяControlTemplate.TargetType
иStyle.TargetType
. Поддержка такого поведения не обеспечивается ни с помощью преобразователей типов, ни с расширений разметки. Вместо этого это поведение отсрочки осуществляется черезFrameworkElementFactory
.