mirror of
https://github.com/Stone-Red-Code/docs-desktop.git
synced 2026-09-04 17:16:03 +02:00
* 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]>
54 lines
4.4 KiB
Markdown
54 lines
4.4 KiB
Markdown
---
|
|
title: "x:Shared Attribute"
|
|
description: "Describes the x:Shared attribute and how it modifies the WPF resource-retrieval behavior."
|
|
ms.date: "03/30/2017"
|
|
helpviewer_keywords:
|
|
- "XAML [XAML Services], x:Shared attribute"
|
|
- "x:Shared attribute [XAML Services]"
|
|
- "Shared attribute in XAML [XAML Services]"
|
|
ms.assetid: 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
|
|
|
|
```xaml
|
|
<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 [!INCLUDE[TLA2#tla_xaml](../includes/tla2sharptla-xaml-md.md)] processing time are irrelevant. For more information about static versus dynamic resource references, see [Overview of XAML resources (WPF .NET)](../net/wpf/systems/xaml-resources-overview.md).
|
|
|
|
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:Shared` must 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:Shared` for items in a <xref:System.Windows.ResourceDictionary> that is within a <xref:System.Windows.Style> that is already a <xref:System.Windows.ResourceDictionary> item.
|
|
|
|
## See also
|
|
|
|
- <xref:System.Windows.ResourceDictionary>
|
|
- [Overview of XAML resources (WPF .NET)](../net/wpf/systems/xaml-resources-overview.md)
|
|
- [Base Elements](../framework/wpf/advanced/base-elements.md)
|