Sdílet prostřednictvím


x:Shared Attribute

Při nastavení na falseupraví chování při načítání prostředků WPF tak, aby požadavky na přiřazený prostředek vytvořily novou instanci pro každý požadavek místo sdílení stejné instance pro všechny požadavky.

Použití atributu XAML

<ResourceDictionary>
  <object x:Shared="false".../>
</ResourceDictionary>

Poznámky

x:Shared je mapován na obor názvů XAML jazyka XAML a rozpozná se jako platný prvek jazyka XAML službami .NET XAML a jejími čtenáři XAML. Uvedené funkce x:Shared jsou však relevantní pouze pro aplikace WPF a pro analyzátor XAML WPF. Ve WPF je x:Shared užitečný pouze jako atribut, pokud je použit na objekt, který existuje v rámci WPF ResourceDictionary. Jiná použití nevyvolají výjimky analýzy ani jiné chyby, ale nemají žádný vliv.

Význam x:Shared není zadán ve specifikaci jazyka XAML. Jiné implementace XAML, například ty, které jsou založené na službách .NET XAML, nemusí nutně poskytovat podporu sdílení prostředků. Takové implementace XAML by mohly poskytovat podobné chování v podpůrné rozhraní, které také používaly x:Shared hodnoty.

Ve WPF je výchozí podmínka x:Shared prostředků true. Tato podmínka znamená, že každý daný požadavek na prostředek vždy vrátí stejnou instanci.

Úprava objektu vráceného prostřednictvím rozhraní API prostředků, jako je FindResourcenebo úprava objektu přímo v rámci ResourceDictionary, změní původní prostředek. Pokud byly odkazy na tento prostředek dynamické odkazy na prostředky, příjemci tohoto prostředku získají změněný prostředek.

Pokud byly odkazy na prostředek statické odkazy na prostředky, změny prostředku po době zpracování XAML jsou irelevantní. Další informace o statických a dynamických odkazech na prostředky naleznete v tématu Přehled prostředků XAML (WPF .NET).

Explicitní zadání x:Shared="true" se provádí zřídka, protože to už je výchozí. V objektovém modelu WPF neexistuje žádný přímý ekvivalent kódu pro x:Shared; Lze ji zadat pouze v použití XAML a musí být zpracována buď výchozím chováním WPF, nebo v zprostředkujícím datovém proudu uzlu XAML na cestě k načtení, pokud je zpracována pomocí služeb .NET XAML Services a jejích čteček XAML.

Scénář pro x:Shared="false" spočívá v tom, že definujete FrameworkElement nebo FrameworkContentElement odvozenou třídu jako prostředek a pak tento prostředek představíte do modelu obsahu. x:Shared="false" umožňuje, aby byl prostředek prvku zaveden vícekrát ve stejné kolekci (například UIElementCollection). Bez x:Shared="false" je to neplatné, protože kolekce vynucuje jedinečnost jejího obsahu. Chování x:Shared="false" však místo vrácení stejné instance vytvoří další identickou instanci prostředku.

Dalším scénářem pro x:Shared="false" je, že pro hodnoty animace použijete prostředek Freezable, ale chcete prostředek upravit na základě animace.

Zpracování řetězců false nerozlišuje malá a velká písmena.

Ve WPF platí x:Shared pouze za následujících podmínek:

Viz také