style plantillas modern gratis for .net wpf xaml targettype

.net - plantillas - wpf templates free



Diferencia entre TargetType="controlType" y TargetType="{x: Type controlType}" (3)

En WPF puede establecer TargetType en el nombre del tipo o puede establecerlo en {x:Type nameOfType} .

¿Alguien sabe cuál es la diferencia?


Además de la diferencia real descrita anteriormente, el uso de {x: Type NameOfType} obviamente se destacará de manera diferente en su IDE y lo destacará y detectará de inmediato (a diferencia de una cadena normal). Entonces esta es mi preferencia personal.


Nada. Dado que el tipo de propiedad es Type , el analizador XAML sabe qué hacer para intentar convertir lo que le proporcione a un Type . En otros escenarios, el tipo de propiedad puede ser menos específico (por ej., Object ), y ahí es donde necesita la extensión de marcado, de lo contrario, el analizador XAML simplemente interpretará su valor como una String .


Perdón por haber metido un hilo tan viejo, pero siento que lo vale. Recientemente me encontré con una situación que muestra que x:Type es diferente de TypeName-as-String .

De acuerdo con mi experiencia -

x:Type considera el nombre fuerte o la versión del ensamblado pero no TypeName-as-String .

He explicado sobre mi escenario y otros detalles en mi blog aquí -

Importancia de especificar AncestorType con x: Escriba en RelativeSourceBinding

Aparte de esto, también hay diferencia en cómo WPF infiere el tipo. Para x:Type se usa x:Type TypeExtension , mientras que para TypeName-as-String FrameworkElementFactory se usa.

Según MSDN - x: Tipo de extensión de marcado

Tipo Propiedades que admiten Typename-as-String

WPF admite técnicas que permiten especificar el valor de algunas propiedades del tipo Tipo sin requerir un uso de extensión x:Type marcado. En cambio, puede especificar el valor como una cadena que nombra el tipo. Ejemplos de esto son ControlTemplate.TargetType y Style.TargetType . El soporte para este comportamiento no se proporciona a través de convertidores de tipo o extensiones de marcado. En cambio, este es un comportamiento diferido implementado a través de FrameworkElementFactory .