* Add overview article for new WPF (#178) * Remove previous WPF .NET 5 content * Overview article * New article: Create new WPF project (#183) * Basic index file * Finish article for new project. * acro * markdown fix * Fix build errors * fix code lang * fix code lang * Add differences article for WPF (#186) * Fix VS version for create app * Add differences article * Minor * fix overview styles code * Add code langs for overview * Port Window Overview WPF article (#1011) * Add Window overview article * Add TOC * Remove temp code * Fix headers * Port final Windows related articles (#1015) * Initial test commit * Add system dialogs * 75% complete * Add images * Fix linter * Add to toc * Add more howto * Fix code * Add get/set main window * Add missing code * Add to toc * Fix warnings * Fix warnings * missing code * Update see also * fix xref * Migrate wpf net core controls-styles articles (#1023) * Migrate control-styles * Fix links * Fix links * Port databinding article. (#1022) * Migrated databinding overview * update toc * Fix links/snippets * fix links * Move to correct folder * Port initial resources docs (#1026) * initial resources docs * Build errors * Update dotnet-desktop-guide/net/wpf/systems/xaml-resources-overview.md Co-authored-by: Genevieve Warren <[email protected]> * Apply suggestions from code review Co-authored-by: Genevieve Warren <[email protected]> * Feedback * Add app article * Add system article * Minor * meta * fix toc * Apply suggestions from code review Co-authored-by: Genevieve Warren <[email protected]> Co-authored-by: Genevieve Warren <[email protected]> * Add xaml article * reformat redirect * Redirects * WPF update XAML article (#1031) * convert snippets * minor edits * minor * Fix warnings * Fixes #1028 * Fixes #1028 * Apply suggestions from code review Co-authored-by: Genevieve Warren <[email protected]> * update redirects Co-authored-by: Genevieve Warren <[email protected]> * minor updates to link * Readd migration article * Warning fixes * Fix lint * Minor updates * Fix warnings for TOC/YML * last warnings Co-authored-by: Genevieve Warren <[email protected]>
4.4 KiB
title, description, ms.date, helpviewer_keywords, ms.assetid
| title | description | ms.date | helpviewer_keywords | ms.assetid | |||
|---|---|---|---|---|---|---|---|
| x:Shared Attribute | Describes the x:Shared attribute and how it modifies the WPF resource-retrieval behavior. | 03/30/2017 |
|
c8cff434-2785-405f-9f95-16deb34c9e64 |
x:Shared Attribute
When set to false, modifies WPF resource-retrieval behavior so that requests for the attributed resource create a new instance for each request instead of sharing the same instance for all requests.
XAML Attribute Usage
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Remarks
x:Shared is mapped to the XAML language XAML namespace and is recognized as a valid XAML language element by .NET XAML Services and its XAML readers. However, the stated capabilities of x:Shared are only relevant for WPF applications and for the WPF XAML parser. In WPF, x:Shared is only useful as an attribute when it is applied to an object that exists within a WPF xref:System.Windows.ResourceDictionary. Other usages do not throw parse exceptions or other errors, but they have no effect.
The meaning of x:Shared is not specified in the XAML language specification. Other XAML implementations, such as those that build on .NET XAML Services, do not necessarily provide resource-sharing support. Such XAML implementations could provide similar behavior in the supporting framework that also used x:Shared values.
In WPF, the default x:Shared condition for resources is true. This condition means that any given resource request always returns the same instance.
Modifying an object that is returned through a resource API, such as xref:System.Windows.FrameworkElement.FindResource%2A, or modifying an object directly within a xref:System.Windows.ResourceDictionary, changes the original resource. If references to that resource were dynamic resource references, the consumers of that resource get the changed resource.
If references to the resource were static resource references, changes to the resource after [!INCLUDETLA2#tla_xaml] processing time are irrelevant. For more information about static versus dynamic resource references, see Overview of XAML resources (WPF .NET).
Explicitly specifying x:Shared="true" is rarely done, because that is already the default. There is no direct code equivalent for x:Shared in the WPF object model; it can only be specified in a XAML usage and must be processed either by the default WPF behavior or in an intermediate XAML node stream on the load path if processed using .NET XAML Services and its XAML readers.
A scenario for x:Shared="false" is if you define a xref:System.Windows.FrameworkElement or xref:System.Windows.FrameworkContentElement derived class as a resource and then you introduce the element resource into a content model. x:Shared="false" enables an element resource to be introduced multiple times in the same collection (such as a xref:System.Windows.Controls.UIElementCollection). Without x:Shared="false" this is invalid because the collection enforces uniqueness of its contents. However, the x:Shared="false" behavior creates another identical instance of the resource instead of returning the same instance.
Another scenario for x:Shared="false" is if you use a xref:System.Windows.Freezable resource for animation values but want to modify the resource on a per animation basis.
The string handling of false is not case sensitive.
In WPF, x:Shared is only valid under the following conditions:
-
The xref:System.Windows.ResourceDictionary that contains the items with
x:Sharedmust be compiled. The xref:System.Windows.ResourceDictionary cannot be within loose XAML or used for themes. -
The xref:System.Windows.ResourceDictionary that contains the items must not be nested within another xref:System.Windows.ResourceDictionary. For example, you cannot use
x:Sharedfor items in a xref:System.Windows.ResourceDictionary that is within a xref:System.Windows.Style that is already a xref:System.Windows.ResourceDictionary item.