Atributo x:Shared
Actualización: noviembre 2007
Cuando se establece en false, modifica el comportamiento de recuperación de recursos de Windows Presentation Foundation (WPF), de suerte que las solicitudes de un recurso 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
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 obtendrán 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 detalles sobre las diferencias entre las referencias de recursos estáticas y dinámicas, vea Información general sobre recursos.)
No se suele especificar x:Shared="true", porque ya es el valor predeterminado. No existe ningún código equivalente directo para x:Shared.
Un escenario para x:Shared="false" es aquél en que se define una clase derivada de FrameworkElement o de FrameworkContentElement como recurso y 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", no sería válido, porque la colección exige la unicidad en su contenido. Sin embargo, el comportamiento de x:Shared="false" crea otra instancia idéntica del recurso, en lugar de devolver la misma.
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.
x:Shared únicamente es válido en las condiciones siguientes:
El objeto ResourceDictionary que contiene los elementos con x:Shared se debe compilar. El objeto ResourceDictionary no puede estar dentro de XAML dinámico ni se puede utilizar para temas.
El objeto ResourceDictionary que contiene los elementos no se puede anidar en otro ResourceDictionary. Por ejemplo, no puede utilizar x:Shared para los elementos de un objeto ResourceDictionary que está dentro de un Style que ya es un elemento de un ResourceDictionary.
Vea también
Conceptos
Información general sobre recursos