tutorial - ¿Cuál es la diferencia entre x: Key y x: Name en WPF?
wpf tutorial (2)
Aunque se usan para fines similares, no son intercambiables. x: la clave se usa para elementos que se agregan como valores a un diccionario, con mayor frecuencia para estilos y otros recursos que se agregan a ResourceDictionary. Al establecer el atributo x: Key, en realidad no hay una propiedad correspondiente en el objeto o incluso una propiedad de dependencia adjunta que se está configurando. Simplemente lo utiliza el procesador XAML para saber qué tecla usar al llamar a Dictionary.Add.
x: El nombre es un poco más complicado. Se usa para aplicar un nombre asociado a un objeto (generalmente un objeto derivado de FrameworkElement) dentro del alcance de algún elemento principal. Este ámbito se denomina "namescope" y la manera más fácil de pensarlo es imaginar un UserControl que contenga un <TextBox x:Name="foo" />
.
A continuación, puede colocar varias instancias del UserControl en una ventana sin que el nombre "foo" colisione porque cada UserControl tiene su propio namescope.
Vale la pena señalar también que FrameworkElement define una propiedad de dependencia llamada Name que es equivalente a establecer x: Name.
La otra diferencia es que el diseñador de XAML crea miembros en el código subyacente para los elementos que tienen una x: Nombre. Esto no es así para los objetos agregados a un diccionario usando x: Key.
Puede encontrar más información sobre estos en la sección de comentarios de la documentación de MSDN para la directiva x: Name .
¿Cuál es la diferencia entre x:Key
y x:Name
en WPF?
No estoy seguro de cuál es la verdadera diferencia.
x: la clave solo es válida en el alcance de un elemento ResourceDictionary. x: Key se usa como el identificador primario para los elementos en ResourceDictionary.
Por otro lado, x: Name es válido en el alcance de todo menos un ResourceDictionary. x: La clave no es válida fuera del alcance de ResourceDictionary.