Slovníky sloučených prostředků (WPF .NET)

Prostředky Windows Presentation Foundation (WPF) podporují funkci sloučeného slovníku prostředků. Tato funkce poskytuje způsob, jak definovat část prostředků aplikace WPF mimo zkompilovanou aplikaci XAML. Prostředky se pak dají sdílet napříč aplikacemi a jsou také pohodlněji izolované pro lokalizaci.

Důležité

Dokumentace k desktopové příručce pro .NET 7 a .NET 6 se právě připravuje.

Vytvoření sloučeného slovníku

Ve značek použijete následující syntaxi k zavedení slovníku sloučeného prostředku na stránku:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

Prvek ResourceDictionary nemá direktivu x:Key, která je obecně nutná pro všechny položky v kolekci prostředků. Dalším ResourceDictionary odkazem v kolekci MergedDictionaries je ale zvláštní případ, který je vyhrazený pro tento scénář slovníku sloučených prostředků. ResourceDictionary Kromě toho slovník sloučených prostředků nemůže mít direktivu x:Key.

Každý ResourceDictionary v kolekci MergedDictionaries obvykle určuje Source atribut. Hodnota Source by měla být identifikátor URI (Uniform Resource Identifier), který se překládá na umístění souboru prostředků, který se má sloučit. Cílem tohoto identifikátoru URI musí být jiný soubor XAML s ResourceDictionary jeho kořenovým elementem.

Poznámka:

Je legální definovat prostředky v rámci ResourceDictionary sloučeného slovníku, a to buď jako alternativu k určení Source, nebo kromě prostředků, které jsou zahrnuté ze zadaného zdroje. Nejedná se ale o běžný scénář. Hlavním scénářem sloučených slovníků je sloučení prostředků z umístění externích souborů. Pokud chcete zadat prostředky v rámci revize stránky, definujte je v hlavní ResourceDictionary a nikoli ve sloučených slovníkech.

Chování sloučeného slovníku

Prostředky ve sloučeném slovníku zabírají umístění v oboru vyhledávání prostředků, který je těsně po rozsahu hlavního slovníku prostředků, do kterého se sloučí. I když musí být klíč prostředku jedinečný v rámci libovolného jednotlivého slovníku, může klíč existovat vícekrát v sadě sloučených slovníků. V tomto případě bude vrácený prostředek pocházet z posledního slovníku nalezeného postupně v kolekci MergedDictionaries . MergedDictionaries Pokud byla kolekce definována v xaml, pořadí sloučených slovníků v kolekci je pořadí prvků, jak je uvedeno v kódu. Pokud je klíč definovaný v primárním slovníku a také ve slovníku, který byl sloučen, bude vrácený prostředek pocházet z primárního slovníku. Tato pravidla oborů platí stejně pro statické odkazy na prostředky i dynamické odkazy na prostředky.

Sloučené slovníky a kód

Sloučené slovníky je možné přidat do slovníku Resources prostřednictvím kódu. Výchozí, zpočátku prázdný ResourceDictionary , který existuje pro libovolnou Resources vlastnost, má také výchozí, zpočátku prázdnou MergedDictionaries vlastnost kolekce. Chcete-li přidat sloučený slovník prostřednictvím kódu, získáte odkaz na požadovaný primární ResourceDictionary, získat jeho MergedDictionaries hodnotu vlastnosti a volat Add obecný Collection , který je obsažen v MergedDictionaries. Objekt, který přidáte, musí být nový ResourceDictionary.

V kódu nenastavíte Source vlastnost. Místo toho musíte objekt získat vytvořením objektu ResourceDictionary nebo načtením objektu. Jedním ze způsobů, jak načíst existující ResourceDictionary volání XamlReader.Load existujícího datového proudu souboru XAML, který má ResourceDictionary kořen, a přetypování návratové hodnoty na ResourceDictionary.

Identifikátory URI sloučeného slovníku

Existuje několik technik, jak zahrnout sloučený slovník prostředků, který je označen formátem URI (Uniform Resource Identifier). Obecně řečeno, tyto techniky lze rozdělit do dvou kategorií: zdroje, které jsou zkompilovány jako součást projektu, a zdroje, které nejsou zkompilovány jako součást projektu.

Pro zdroje, které jsou zkompilovány jako součást projektu, můžete použít relativní cestu, která odkazuje na umístění zdroje. Relativní cesta se vyhodnocuje během kompilace. Zdroj musí být definován jako součást projektu jako akce sestavení zdroje . Pokud do projektu zahrnete soubor .xaml zdroje jako Zdroj, nemusíte kopírovat soubor prostředků do výstupního adresáře, zdroj je již součástí zkompilované aplikace. Můžete také použít akci sestavení obsahu , ale musíte soubory zkopírovat do výstupního adresáře a také nasadit soubory prostředků ve stejné relaci cesty ke spustitelnému souboru.

Poznámka:

Nepoužívejte akci sestavení vloženého prostředku . Samotná akce sestavení je podporována pro aplikace WPF, ale rozlišení Source nezahrnuje ResourceManager, a proto nemůže oddělit jednotlivé prostředky od datového proudu. Vložený prostředek můžete i nadále používat pro jiné účely, pokud jste k prostředkům přistupovali ResourceManager také.

Související technika spočívá v použití identifikátoru URI balíčku k souboru XAML a odkazování na něj jako na zdroj. Identifikátor URI balíčku umožňuje odkazy na komponenty odkazovaných sestavení a dalších technik. Další informace o identifikátorech URI balíčků najdete v tématu Prostředek aplikace WPF, obsah a datové soubory.

U prostředků, které nejsou zkompilovány jako součást projektu, se identifikátor URI vyhodnocuje za běhu. K odkazování na soubor prostředku můžete použít běžný přenos identifikátoru URI, například soubor: nebo http : . Nevýhodou použití nekompilovaného přístupu k prostředkům je tento soubor: přístup vyžaduje další kroky nasazení a http: přístup znamená zónu zabezpečení internetu.

Opakované opakované nasazení sloučených slovníků

Slovníky sloučených prostředků můžete opakovaně používat nebo sdílet mezi aplikacemi, protože na slovník prostředků ke sloučení lze odkazovat prostřednictvím libovolného platného identifikátoru URI (Uniform Resource Identifier). Přesně to, jak to uděláte, závisí na strategii nasazení aplikace a na modelu aplikace, který sledujete. Dříve uvedená strategie identifikátoru URI balíčku představuje způsob, jak během vývoje běžně zdroj sloučeného prostředku napříč několika projekty sdílet odkaz na sestavení. V tomto scénáři jsou prostředky stále distribuovány klientem a alespoň jedna z aplikací musí nasadit odkazované sestavení. Je také možné odkazovat na sloučené prostředky prostřednictvím distribuovaného identifikátoru URI, který používá protokol HTTP: .

Zápis sloučených slovníků jako místních souborů aplikací nebo do místního sdíleného úložiště je dalším možným scénářem nasazení sloučeného slovníku a aplikace.

Lokalizace

Pokud jsou prostředky, které je potřeba lokalizovat, izolované do slovníků, které jsou sloučeny do primárních slovníků, a ponechat je jako volný XAML, tyto soubory lze lokalizovat samostatně. Tato technika je jednoduchá alternativa k lokalizaci sestavení satelitních prostředků. Podrobnosti najdete v tématu Přehled globalizace a lokalizace WPF.

Viz také