x:Shared – atribut
Při nastavení na false
hodnotu upraví chování při načítání prostředků WPF tak, aby požadavky na atributový prostředek vytvořily pro každý požadavek novou instanci 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 namapován na obor názvů XAML jazyka XAML a je rozpoznán jako platný prvek jazyka XAML službami .NET XAML Services a jejími čtenáři XAML. Uvedené funkce x:Shared
jsou však relevantní pouze pro aplikace WPF a pro analyzátor WPF XAML. V WPF je x:Shared
užitečné pouze jako atribut při 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ém rozhraní, které také používaly x:Shared
hodnoty.
Ve WPF je výchozí x:Shared
podmínka pro prostředky 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 FindResourceje například nebo úprava objektu přímo v rámci objektu 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 je to už výchozí. V objektovém modelu WPF neexistuje žádný přímý ekvivalent x:Shared
kódu. Je možné ho zadat pouze v použití XAML a musí být zpracován ve výchozím chování WPF nebo v zprostředkujícím datovém proudu uzlu XAML v cestě načítání, pokud je zpracován pomocí služeb XAML .NET XAML a jeho čteček XAML.
Scénář x:Shared="false"
spočívá v tom, že definujete FrameworkElement nebo FrameworkContentElement odvozenou třídu jako prostředek a pak tento prvek zavedete do con režim stanu l. x:Shared="false"
umožňuje, aby byl prostředek prvku zaveden vícekrát ve stejné kolekci (například UIElementCollection). Bez x:Shared="false"
této hodnoty není platná, 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 x:Shared="false"
je, že použijete Freezable prostředek pro hodnoty animace, ale chcete prostředek upravit na základě animace.
Zpracování řetězců false
nerozlišuje malá a velká písmena.
Ve WPF x:Shared
platí pouze za následujících podmínek:
Položky ResourceDictionary , které
x:Shared
obsahují, musí být zkompilovány. Nelze ResourceDictionary použít volný kód XAML nebo použít pro motivy.Položka ResourceDictionary , která obsahuje položky, nesmí být vnořena do jiné ResourceDictionary. Například nelze použít
x:Shared
položky v objektu ResourceDictionary , který je v rámci Style položky, která je již položkou ResourceDictionary .
Viz také
.NET Desktop feedback