Atributo x:Shared
Quando definido como false, que modifica o comportamento de recuperação de recursos do WPF para que as solicitações para o recurso atribuído em grande parte criam uma nova instância para cada solicitação em vez de compartilhar a mesma instância de todas as solicitações.
XAML Attribute Usage
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Comentários
x:Sharedé mapeado para o namespace XAML linguagem XAML e é reconhecido como um elemento de linguagem XAML válido por.NET Framework XAML Services e seus leitores XAML. No entanto, os recursos declarados de x:Shared são apenas relevantes para aplicativos WPF e o analisador do WPF XAML. No WPF, x:Shared é somente útil como um atributo quando ele é aplicado a um objeto que existe dentro de um WPF ResourceDictionary. Outros usos não lançar exceções de análise ou outros erros, mas não têm nenhum efeito.
O significado de x:Shared não for especificado na especificação de linguagem XAML. Outras implementações de XAML, como aqueles que se baseiam.NET Framework XAML Services, não fornecem necessariamente o compartilhamento de recursos suporte. Tais implementações de XAML poderiam fornecer um comportamento semelhante na estrutura de suporte também usada x:Shared valores.
No WPF, o padrão x:Shared condição de recursos é true. This condition means that any given resource request always returns the same instance.
Modificando um objeto que é retornado por meio de um recurso de API, como FindResource, ou modificar um objeto diretamente dentro de um ResourceDictionary, altera o recurso original. Se as referências de recurso dinâmico referências a esse recurso, os consumidores desse recurso obtém o recurso alterado.
Se as referências para o recurso foram referências de recurso estático, altera para o recurso após XAML o tempo de processamento são irrelevantes. Para obter mais informações sobre estáticas versus referências de recursos dinâmicos, consulte Visão geral sobre Recursos.
Especificando explicitamente x:Shared="true" raramente é feito, porque é que já o padrão. Não há nenhum código direto equivalente para x:Shared no modelo de objeto WPF; Ele só pode ser especificado um uso XAML e deve ser processado pelo comportamento padrão do WPF ou em um fluxo de nó XAML intermediário no caminho de carga se processado usando.NET Framework XAML Services e seus leitores XAML.
Um cenário para x:Shared="false" é se você definir um FrameworkElement ou FrameworkContentElement derivado da classe como um recurso e, em seguida, você apresentar o recurso de elemento em um modelo de conteúdo. x:Shared="false"permite que um recurso de elemento ser apresentado várias vezes na mesma coleção (como um UIElementCollection). Sem x:Shared="false" isso é inválido porque a coleção aplique a exclusividade de conteúdo. No entanto, o x:Shared="false" comportamento cria outra instância idêntica do recurso em vez de retornar a mesma instância.
Outro cenário para x:Shared="false" é se você usar um Freezable recursos para os valores de animação mas que desejam modificar o recurso em um por base a animação.
A manipulação de seqüência de caracteres de false é o caso, não sensível.
No WPF, x:Shared só é válida nas seguintes condições:
The ResourceDictionary that contains the items with x:Shared must be compiled. O ResourceDictionary não pode ser dentro do XAML livre ou usado para temas.
The ResourceDictionary that contains the items must not be nested within another ResourceDictionary. Por exemplo, você não pode usar x:Shared itens em um ResourceDictionary que está dentro um Style que já está um ResourceDictionary item.