Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
WPF-resurser (Windows Presentation Foundation) stöder en sammanslagen resursordlistefunktion. Den här funktionen är ett sätt att definiera resursdelen i ett WPF-program utanför det kompilerade XAML-programmet. Resurser kan sedan delas mellan program och är också mer bekvämt isolerade för lokalisering.
Skapa en sammanfogad ordlista
I markering använder du följande syntax för att introducera en sammanfogad resursordlista på en sida:
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myresourcedictionary.xaml"/>
<ResourceDictionary Source="myresourcedictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
Elementet ResourceDictionary har inget x:Key-direktiv, vilket vanligtvis krävs för alla objekt i en resurssamling. Men en annan ResourceDictionary referens i MergedDictionaries-samlingen är ett specialfall som är reserverat för det här sammanfogade resursordlistescenariot. Dessutom ResourceDictionary kan det som introducerar en sammanfogad resursordlista inte ha ett x:Key-direktiv.
Vanligtvis anger varje ResourceDictionary i MergedDictionaries-samlingen ett Source attribut. Värdet för Source ska vara en enhetlig resursidentifierare (URI) som matchar platsen för den resursfil som ska sammanfogas. Målet för den URI:n måste vara en annan XAML-fil, med ResourceDictionary som rotelement.
Anmärkning
Det är lagligt att definiera resurser i en ResourceDictionary som anges som en sammanfogad ordlista, antingen som ett alternativ till att ange Sourceeller utöver de resurser som ingår från den angivna källan. Detta är dock inte ett vanligt scenario. Huvudscenariot för sammanfogade ordlistor är att slå samman resurser från externa filplatser. Om du vill ange resurser i markering för en sida definierar du dessa i huvudavsnittet ResourceDictionary och inte i de sammanfogade ordlistorna.
Sammanslaget ordboksbeteende
Resurser i en sammanfogad ordlista upptar en plats i resurssökningsomfånget som är strax efter omfånget för den huvudresursordlista som de sammanfogas till. Även om en resursnyckel måste vara unik i en enskild ordlista kan en nyckel finnas flera gånger i en uppsättning sammanfogade ordlistor. I det här fallet kommer resursen som returneras från den senaste ordlistan som hittades sekventiellt i MergedDictionaries samlingen. Om samlingen MergedDictionaries definieras i XAML, är ordningen av de slagna ordlistorna i samlingen densamma som ordningen av elementen som anges i markup. Om en nyckel definieras i den primära ordlistan och även i en ordlista som har sammanfogats kommer resursen som returneras att komma från den primära ordlistan. Dessa omfångsregler gäller lika för både statiska resursreferenser och dynamiska resursreferenser.
Sammanfogade ordlistor och kod
Sammanfogade ordlistor kan läggas till i en Resources ordlista via kod. Standardvärdet, som ursprungligen är tomt ResourceDictionary som finns för alla Resources egenskaper, har också en standard, ursprungligen tom MergedDictionaries samlingsegenskap. Om du vill lägga till en sammanfogad ordlista via kod får du en referens till önskad primär ResourceDictionary, hämtar dess MergedDictionaries egenskapsvärde och anropar Add den generiska Collection som finns i MergedDictionaries. Objektet du lägger till måste vara ett nytt ResourceDictionary.
I kod anger du inte egenskapen Source . I stället måste du skaffa ett ResourceDictionary objekt genom att antingen skapa ett eller läsa in ett objekt. Ett sätt att läsa in en befintlig ResourceDictionary är att anropa XamlReader.Load på en befintlig XAML-filström som har en ResourceDictionary-rot och sedan konvertera returvärdet till ResourceDictionary.
Sammanfogade ordliste-URI:er
Det finns flera metoder för att inkludera en sammanfogad resursordlista, som anges av det URI-format (uniform resource identifier) som du använder. I stort sett kan dessa tekniker delas in i två kategorier: resurser som kompileras som en del av projektet och resurser som inte kompileras som en del av projektet.
För resurser som kompileras som en del av projektet kan du använda en relativ sökväg som refererar till resursplatsen. Den relativa sökvägen utvärderas under kompilering. Resursen måste definieras som en del av projektet som en resursgenereringsåtgärd . Om du inkluderar en .xaml-resursfil i projektet som Resurs behöver du inte kopiera resursfilen till utdatakatalogen. Resursen ingår redan i det kompilerade programmet. Du kan också använda åtgärden Skapa innehåll , men du måste sedan kopiera filerna till utdatakatalogen och även distribuera resursfilerna i samma sökvägsrelation till den körbara filen.
Anmärkning
Använd inte byggåtgärden Inbäddad resurs. Själva byggåtgärden stöds för WPF-program, men lösningen av Source inkluderar inte ResourceManager, och kan därför inte separera den enskilda resursen från flödet. Du kan fortfarande använda Inbäddad resurs för andra ändamål så länge du också använde ResourceManager för att komma åt resurserna.
En relaterad teknik är att använda en pack-URI till en XAML-fil och referera till den som Källa. Pack-URI möjliggör referenser till komponenter i refererade sammansättningar och andra tekniker. Mer information om URI:er för paket finns i WPF-programresurs, innehåll och datafiler.
För resurser som inte kompileras som en del av projektet utvärderas URI:n när programmet körs. Du kan använda en vanlig URI-transport, till exempel fil: eller http: för att referera till resursfilen. Nackdelen med att använda den icke-kompilerade resursmetoden är att filen: åtkomst kräver ytterligare distributionssteg och http: åtkomst innebär Internetsäkerhetszonen.
Återanvända sammanfogade ordlistor
Du kan återanvända eller dela sammanfogade resursordlistor mellan program eftersom resursordlistan som ska sammanfogas kan refereras via valfri giltig enhetlig resursidentifierare (URI). Exakt hur du gör detta beror på din programdistributionsstrategi och vilken programmodell du följer. Den tidigare nämnda pack-URI-strategin är ett sätt att ofta skapa en sammanslagen resurs i flera projekt under utvecklingen genom att dela en sammansättningsreferens. I det här scenariot distribueras resurserna fortfarande av klienten och minst ett av programmen måste distribuera den refererade sammansättningen. Det går också att referera till sammanfogade resurser via en distribuerad URI som använder http: -protokollet.
Att skriva sammanfogade ordlistor som lokala programfiler eller till lokal delad lagring är en annan möjlig sammanslagen ordlista och programdistributionsscenario.
Lokalisering
Om resurser som behöver lokaliseras isoleras till ordlistor som sammanfogas till primära ordlistor och behålls som fristående XAML, kan dessa filer lokaliseras separat. Den här tekniken är ett enkelt alternativ till att lokalisera satellitresurssammansättningarna. Mer information finns i WPF Globalization and Localization Overview.
Se även
.NET Desktop feedback