Compartir a través de


Atributo x:Shared

Cuando se establece en false, modifica el comportamiento de recuperación de recursos de WPF para que el recurso con atributos creen una nueva instancia para 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 se asigna al espacio de nombres XAML del lenguaje XAML y se reconoce como un elemento de lenguaje XAML válido por los servicios XAML de .NET y sus lectores XAML. Sin embargo, las funcionalidades indicadas de x:Shared solo son relevantes para las aplicaciones WPF y para el analizador XAML de WPF. En WPF x:Shared solo es útil como atributo cuando se aplica a un objeto que existe dentro de un ResourceDictionary de WPF. Otros usos no producen excepciones de análisis u otros errores, pero no tienen ningún efecto.

El significado de x:Shared no se especifica en la especificación del lenguaje XAML. Otras implementaciones XAML, como las que se basan en servicios XAML de .NET, no proporcionan necesariamente compatibilidad con el uso compartido de recursos. Estas implementaciones XAML podían proporcionar un comportamiento similar en el marco auxiliar que también usaba valores x:Shared.

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

Modificar un objeto que se devuelve a través de una API de recursos, como FindResource o modificar un objeto directamente dentro de un ResourceDictionary, cambia el recurso original. Si las referencias a ese recurso fueran referencias de recursos dinámicos, los consumidores de ese recurso obtendrían el recurso cambiado.

Si las referencias al recurso eran referencias de recursos estáticos, los cambios en el recurso después del tiempo de procesamiento XAML son irrelevantes. Para obtener más información sobre la comparación entre las referencias de recursos estáticos y dinámicos, vea Información general sobre los recursos XAML (WPF .NET).

La especificación explícita de x:Shared="true" se realiza raras veces, ya que ya es el valor predeterminado. No hay ningún código directo equivalente para x:Shared en el modelo de objetos de WPF; solo se puede especificar en un uso XAML y debe procesarse por el comportamiento predeterminado de WPF o en un flujo de nodo XAML intermedio en la ruta de acceso de carga si se procesa mediante servicios XAML de .NET y sus lectores XAML.

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

Otro escenario para x:Shared="false" es si usa un recurso Freezable para los valores de animación, pero desea modificar el recurso por animación.

El control de cadenas de false no distingue entre mayúsculas minúsculas.

En WPF x:Shared solo es válido en las condiciones siguientes:

Vea también