Compartir a través de


Atributo x:Shared

Cuando se establece en false, modifica el comportamiento de recuperación de recursos de WPF, de forma que las solicitudes para un recurso de atributos crearán una nueva instancia por cada solicitud, en lugar de compartir la misma instancia para todas las solicitudes.

Uso de atributos XAML

<ResourceDictionary>
  <object x:Shared="false".../>
</ResourceDictionary>

Comentarios

x:Shared está asignado en el espacio de nombres XAML de lenguaje XAML y se reconoce como un elemento de lenguaje XAML válido por servicios XAML de .NET Framework y sus lectores XAML. Sin embargo, las capacidades comentadas de x:Shared únicamente son pertinentes en aplicaciones WPF y para el analizador XAML de WPF. En WPF, x:Shared es útil únicamente como un atributo cuando se aplicó a un objeto que existe dentro de un WPF ResourceDictionary. Otros usos no producen excepciones de análisis ni otros errores, pero no tienen ningún efecto.

El significado de x:Shared no se especifica en la especificación de lenguaje XAML. Otras implementaciones XAML, como aquellas que se compilan en servicios XAML de .NET Framework, no ofrecen necesariamente la compatibilidad de uso compartido de recursos. Estas implementaciones XAML podrían proporcionar un comportamiento similar en el marco de apoyo que también utilizó los valores x:Shared.

En WPF, la condición de x:Shared predeterminada para los recursos es true. Esta condición significa que cualquier solicitud de recurso devolverá siempre la misma instancia.

Al modificar un objeto devuelto a través de una API de recursos como FindResource, o al modificarlo directamente dentro de un ResourceDictionary, se cambia el recurso original. Si las referencias a ese recurso eran dinámicas, los consumidores de ese recurso obtienen el recurso modificado.

Si las referencias al recurso eran estáticas, los cambios que se produzcan en el recurso después del tiempo de procesamiento de XAML serán irrelevantes. Para obtener más información sobre las diferencias entre las referencias de recursos estáticas y dinámicas, consulte Información general sobre recursos.

No se suele especificar explícitamente x:Shared="true", porque ya es el valor predeterminado. No hay ningún código equivalente directo para x:Shared en el modelo de objeto de WPF; sólo se puede especificar en una utilización XAML y se debe procesar por el comportamiento de WPF predeterminado, o bien en una secuencia del nodo XAML intermedia de la ruta de acceso de carga si se procesa mediante los servicios XAML de .NET Framework y sus lectores XAML.

Un escenario para x:Shared="false" es aquel en que se define una clase derivada de FrameworkElement o de FrameworkContentElement como recurso y, a continuación, se introduce el recurso de elemento en un modelo de contenido. x:Shared="false" permite introducir un recurso de elemento varias veces en la misma colección (como UIElementCollection, por ejemplo). Sin x:Shared="false" esto no es válido porque la colección exige la unicidad de su contenido. Sin embargo, el comportamiento de x:Shared="false" crea otra instancia idéntica de recursos en lugar de devolver la misma instancia.

Otro escenario para x:Shared="false" es el uso de un recurso Freezable para valores de animación, pero desea modificarlo para cada animación.

La administración de cadena de false no distingue mayúsculas de minúsculas.

En WPF, x:Shared únicamente es válido en las condiciones siguientes:

Vea también

Referencia

ResourceDictionary

Conceptos

Información general sobre recursos

Otros recursos

Elementos base