todo está en el título:¿Qué hace x: Key = "{x: Type TextBox}" do?
He leído más de una vez que la creación de un estilo como este:
<Style TargetType="TextBox">...</Style>
era más o menos equivalente a:
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">...</Style>
(última vez in a comment on another question)
ambos deben aplicar el estilo a todos los cuadros de texto en la aplicación (si se ponen en los recursos de la aplicación, por supuesto)
pero probé ambas en mis aplicaciones, y solo la segunda con la x: clave definida funciona.
es bastante lógico para mí, ya que el primero no sabe dónde aplicar sin ninguna x: propiedad clave establecida, pero ¿cuál es el punto de la primera sintaxis?
Editar: ejemplo de código en mi aplicación que funciona bien:
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
y código que no es así:
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
de escribir este para deshacerse de los temas relacionados con combinaciones que obtener con comboBoxItems cuando manipula un elemento de ComboBox existente. Y el primer código funciona bien, pero el segundo no.
se puede ver esto fácilmente estableciendo el derecho a HorizontalContentAlignment
Edición 2: Este código es simplemente poner en un diccionario de recursos en mi App.xaml. Y la sustitución de TargetType = "{x: Tipo ComboBoxItem}" con TargetType = "ComboBoxItem" no hace ninguna diferencia en absoluto
Datos 3: Me di cuenta de que podría haber olvidado que precisa algo importante (lo siento por eso): aunque el los estilos se definen en xaml, en realidad agrego los controles al diseño en mi código, ya que se agregan dinámicamente. Puede ser donde reside el problema ...
¿Puede explicar a qué se refiere aquí: * desde la codificación ser hind WPF está destinado a ser imperfecto. * ¿Crees que este caso es un error en WPF? Creo que necesitamos ver mucho más código antes de llegar a esa conclusión. –
"¿Crees que este caso es un error en WPF?" Sí, eso es exactamente lo que quiero decir. No creo que necesites más código para llegar a esa conclusión porque tenemos una descripción de lo que * debe * suceder y un informe que de hecho no siempre es el caso. El código proporcionado parece bastante simple y si todo lo demás se deja completamente igual, puede concluir que la falla tiene que ser con un código WPF central. –
Entonces, lo que está diciendo es que podría combinar la propiedad TargetType con una propiedad x: Type. Entonces su estilo de ComboBoxItem solo se aplicará cuando se asiente explícitamente en el XAML. –