In WPF you can set the TargetType
to either the name of the type or you can set it to {x:Type nameOfType}
.
Does anyone know what the difference is?
In WPF you can set the TargetType
to either the name of the type or you can set it to {x:Type nameOfType}
.
Does anyone know what the difference is?
Nothing. Since the property type is
Type
, the XAML parser knows to try and convert whatever you supply to aType
. In other scenarios, the property type might be less specific (eg.Object
), and that's where you need the markup extension, otherwise the XAML parser will just interpret your value as aString
.Apart from the real difference described above, using {x:Type NameOfType} obviously will be highlighted differently in your IDE and makes it stand out and spot right away (as opposed to a regular string). So this is my personal preference.
Sorry for poking such an old thread, but I feel it's worth it. I have recently encountered a situation which shows that
x:Type
is different fromTypeName-as-String
.From my experience -
x:Type
considers the strong name or the version of the assembly but notTypeName-as-String
.I have explained about my scenario and other details in my blog here -
Importance of specifying AncestorType with x:Type in RelativeSourceBinding
Apart from this, there is also difference in how WPF infers the type. For
x:Type
TypeExtension
is used, whereas forTypeName-as-String
FrameworkElementFactory
is used.As per MSDN - x:Type Markup Extension