Aracılığıyla paylaş


WPF'de URI'leri paketleme

Windows Presentation Foundation'da (WPF), tekdüzen kaynak tanımlayıcıları (URI'ler), dosyaları tanımlamak ve yüklemek için aşağıdakiler de dahil olmak üzere birçok şekilde kullanılır:

  • Bir uygulamanın ilk kez ne zaman başlatılacağını göstermek için kullanıcı arabirimini (UI) belirtme.

  • Görüntüler yükleniyor.

  • Sayfalara gezinme.

  • Yürütülemeyen veri dosyaları yükleniyor.

Ayrıca, URI'ler aşağıdakiler de dahil olmak üzere çeşitli konumlardaki dosyaları tanımlamak ve yüklemek için kullanılabilir:

  • Geçerli montaj.

  • Referans verilen derleme.

  • Bir derlemeye göre konum.

  • Uygulamanın kaynak sitesi.

WPF, bu tür dosyaları bu konumlardan tanımlamak ve yüklemek için tutarlı bir mekanizma sağlamak içinpaketi URI şemasının genişletilebilirliğini kullanır. Bu konu düzenine genel bir bakış sağlar, çeşitli senaryolar için paket URI'leri oluşturmayı kapsar, hem işaretleme hem de koddan paket URI'lerinin nasıl kullanılacağını göstermeden önce mutlak ve göreli URI'leri ve URI çözümlemesini açıklar.

Paket URI Şeması

Paket URI şeması, içeriği düzenlemeye ve tanımlamaya yönelik bir modeli açıklayan Open Packaging Conventions (OPC) belirtimi tarafından kullanılır. Bu modelin temel öğeleri, bir paketibir veya daha fazla mantıksal parçası için mantıksal bir kapsayıcı olduğu paketler ve parçalardır. Aşağıdaki şekilde bu kavram gösterilmektedir.

paket ve parça diyagramı

Parçaları tanımlamak için OPC belirtimi, paket URI düzenini tanımlamak için RFC 2396'nın genişletilebilirliğini (Tekdüzen Kaynak Tanımlayıcıları (URI): Genel Söz Dizimi) kullanıyor.

Bir URI tarafından belirtilen düzen, ön ekine göre tanımlanır; http, ftp ve file iyi bilinen örneklerdir. Paket URI düzeni, şeması olarak "pack" kullanır ve iki bileşen içerir: yetkili ve yol. Paket URI'sinin biçimi aşağıdadır.

pack://yetkili/yolu

yetkilisi bir parçanın içerdiği paket türünü belirtirken, yolu bir parçanın paket içindeki konumunu belirtir.

Bu kavram aşağıdaki şekilde gösterilmiştir:

paket, yetki ve yol arasındaki ilişki

Paketler ve parçalar uygulamalar ve dosyalara benzer; burada bir uygulama (paket) aşağıdakiler dahil olmak üzere bir veya daha fazla dosya (parça) içerebilir:

  • Yerel derlemede derlenen kaynak dosyaları.

  • Başvuruda bulunılan bir derlemede derlenen kaynak dosyaları.

  • Başvuru derlemesinde derlenen kaynak dosyaları.

  • İçerik dosyaları.

  • Kaynak dosyaların sitesi.

WPF, bu tür dosyalara erişmek için iki yetkiliyi destekler: application:/// ve siteoforigin:///. application:/// yetkilisi, kaynak ve içerik dosyaları da dahil olmak üzere derleme zamanında bilinen uygulama veri dosyalarını tanımlar. siteoforigin:/// yetkilisi kaynak dosyaların sitesini tanımlar. Her yetkilinin kapsamı aşağıdaki şekilde gösterilmiştir.

Pack URI diyagramı

Not

Paket URI'sinin yetkili bileşeni, pakete işaret eden ve RFC 2396'ya uyması gereken ekli bir URI'dir. Buna ek olarak, "/" karakterinin "," karakteriyle değiştirilmesi ve "%" ve "?" gibi ayrılmış karakterlerin kaçış karakteri olması gerekir. Ayrıntılar için OPC'ye bakın.

Aşağıdaki bölümlerde kaynak, içerik ve kaynak dosyalarının sitesini tanımlamak için uygun yollarla birlikte bu iki yetkiliyi kullanarak paket URI'lerinin nasıl yapılacağı açıklanmaktadır.

Kaynak Dosya Paketi URI'leri

Kaynak dosyaları MSBuild Resource öğeleri olarak yapılandırılır ve derlemeler halinde derlenir. WPF, yerel derlemeye derlenmiş veya yerel derlemeden başvurulan bir derlemeye derlenmiş kaynak dosyalarını tespit etmekte kullanılabilecek paket URI'lerinin oluşturulmasını destekler.

Yerel Derleme Kaynak Dosyası

Yerel derlemede derlenen bir kaynak dosyasının paket URI'si aşağıdaki yetkiliyi ve yolu kullanır:

  • Yetkilisi: application:///.

  • Yol: Yerel montaj proje klasörü köküne göre, yolu da dahil olmak üzere kaynak dosyasının adıdır.

Aşağıdaki örnek, yerel derlemenin proje klasörünün kökünde bulunan bir XAML kaynak dosyasının paket URI'sini gösterir.

pack://application:,,,/ResourceFile.xaml

Aşağıdaki örnek, yerel derlemenin proje klasörünün alt klasöründe bulunan bir XAML kaynak dosyasının paket URI'sini gösterir.

pack://application:,,,/Subfolder/ResourceFile.xaml

Referans Alınan Assembly Kaynak Dosyası

Başvuruda bulunılan bir derlemede derlenen bir kaynak dosyasının paket URI'si aşağıdaki yetkiliyi ve yolu kullanır:

  • Yetkilisi: application:///.

  • Yol: Başvurulan bir derlemeye dahil edilmiş olan kaynak dosyasının adı. Yol aşağıdaki biçime uygun olmalıdır:

    AssemblyShortName{;Sürüm]{;PublicKey]; bileşen/Yol

    • AssemblyShortName: başvurulan derlemenin kısa adı.

    • ; Sürüm [isteğe bağlı]: kaynak dosyasını içeren başvuruda bulunılan derlemenin sürümü. Bu, aynı kısa ada sahip iki veya daha fazla başvurulmuş derleme yüklendiğinde kullanılır.

    • ;P ublicKey [isteğe bağlı]: başvurulan derlemeyi imzalamak için kullanılan ortak anahtar. Bu, aynı kısa ada sahip iki veya daha fazla başvurulan derleme yüklendiğinde kullanılır.

    • ; bileşen: atıfta bulunulan montajın yerel montajdan referans alındığını belirtir.

    • /Path: Başvuruda bulunılan derlemenin proje klasörünün köküne göre, yolu da dahil olmak üzere kaynak dosyasının adı.

Aşağıdaki örnek, başvuruda bulunılan derlemenin proje klasörünün kökünde bulunan bir XAML kaynak dosyasının paket URI'sini gösterir.

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

Aşağıdaki örnek, başvuruda bulunılan derlemenin proje klasörünün alt klasöründe bulunan bir XAML kaynak dosyasının paket URI'sini gösterir.

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml

Aşağıdaki örnekte, sürüme özgü bir derlemenin proje klasörünün kök klasöründe bulunan bir XAML kaynak dosyasının paket URI'si gösterilmektedir.

pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml

Başvuruda bulunılan derleme kaynak dosyaları için paket URI söz diziminin yalnızca application:/// yetkilisiyle kullanılabileceğini unutmayın. Örneğin, WPF'de aşağıdakiler desteklenmez.

pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml

İçerik Dosya Paketi URI'leri

İçerik dosyasının paket URI'sinde aşağıdaki yetkili ve yol kullanılır:

  • Yetkilisi: application:///.

  • Path: uygulamanın ana yürütülebilir derlemesinin dosya sistemi konumuna göre yolu da dahil olmak üzere içerik dosyasının adı.

Aşağıdaki örnek, yürütülebilir derlemeyle aynı klasörde bulunan bir XAML içerik dosyasının paket URI'sini gösterir.

pack://application:,,,/ContentFile.xaml

Aşağıdaki örnek, uygulamanın yürütülebilir derlemesine göre bir alt klasörde bulunan bir XAML içerik dosyasının paket URI'sini gösterir.

pack://application:,,,/Subfolder/ContentFile.xaml

Not

HTML içerik dosyalarına gidilemiyor. URI düzeni yalnızca kaynak sitede bulunan HTML dosyalarına gezintiyi destekler.

Kaynak Paketi URI'lerinin sitesi

Kaynak dosya sitesi için paket URI'sinde aşağıdaki yetkili ve yol kullanılır:

  • Yetkilisi: siteoforigin:///.

  • Yol: Yürütülebilir derlemenin başlatıldığı konuma göre yolu da dahil olmak üzere kaynak dosya sitesinin adı.

Aşağıdaki örnek, yürütülebilir derlemenin başlatıldığı konumda depolanan bir kaynak dosyanın XAML sitesi için paket URI'sini gösterir.

pack://siteoforigin:,,,/SiteOfOriginFile.xaml

Aşağıdaki örnek, uygulamanın yürütülebilir derlemesinin başlatıldığı konuma göre alt klasörde depolanan bir kaynak dosyanın XAML sitesi için paket URI'sini gösterir.

pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml

Sayfa Dosyaları

MSBuild Page öğeleri olarak yapılandırılan XAML dosyaları, kaynak dosyalarıyla aynı şekilde derlemeler halinde derlenir. Sonuç olarak, MSBuild Page öğeleri kaynak dosyaları için paket URI'leri kullanılarak tanımlanabilir.

GENELLIKLE MSBuildPage öğeleri olarak yapılandırılan XAML dosyası türleri, kök öğesi olarak aşağıdakilerden birine sahiptir:

Mutlak ve Göreli Paket URI'leri karşılaştırması

Tam paket URI'sinde şema, yetki ve yol bulunur ve mutlak bir paket URI'si olarak kabul edilir. Geliştiriciler için basitleştirme olarak, XAML öğeleri genellikle yalnızca yolu içeren göreli bir paket URI'si ile uygun öznitelikler ayarlamanıza olanak sağlar.

Örneğin, yerel derlemedeki bir kaynak dosyası için aşağıdaki mutlak paket URI'sini göz önünde bulundurun.

pack://application:,,,/ResourceFile.xaml

Bu kaynak dosyasına başvuran göreli paket URI'si aşağıdaki gibi olacaktır.

/ResourceFile.xaml

Not

Kaynak dosyaların sitesi derlemelerle ilişkilendirilmediğinden, bunlara yalnızca mutlak paket URI'leri ile başvurulabilir.

Varsayılan olarak, göreli paket URI'si, başvuruyu içeren işaretlemenin veya kodun konumuna göre kabul edilir. Öte yandan, öndeki bir ters eğik çizgi kullanılırsa, göreli paket URI başvurusu uygulamanın köküne göre kabul edilir. Örneğin, aşağıdaki proje yapısını göz önünde bulundurun.

App.xaml

Page2.xaml

\SubFolder

+ Page1.xaml

+ Page2.xaml

Page1.xaml Root\SubFolder\Page2.xaml'e başvuran bir URI içeriyorsa, başvuru aşağıdaki göreli paket URI'sini kullanabilir.

Page2.xaml

Page1.xaml Root\Page2.xaml'e başvuran bir URI içeriyorsa, başvuru aşağıdaki göreli paket URI'sini kullanabilir.

/Page2.xaml

Paket URI Çözümlemesi

Paket URI'lerinin biçimi, farklı dosya türleri için paket URI'lerinin aynı görünmesini mümkün kılar. Örneğin, aşağıdaki mutlak paket URI'sini göz önünde bulundurun.

pack://application:,,,/ResourceOrContentFile.xaml

Bu mutlak paket URI'si, yerel derlemedeki bir kaynak dosyasına veya içerik dosyasına başvurabilir. Aşağıdaki göreli URI için de aynı durum geçerlidir.

/ResourceOrContentFile.xaml

Bir paket URI'sinin başvurduğu dosya türünü belirlemek için WPF, yerel derlemelerdeki kaynak dosyaları ve içerik dosyalarındaki URI'leri aşağıdaki buluşsal yöntemleri kullanarak çözümler:

  1. Paket URI'sine uyum sağlayan bir AssemblyAssociatedContentFileAttribute özniteliği bulmak için derleme meta verilerini inceleyin.

  2. AssemblyAssociatedContentFileAttribute özniteliği bulunursa, paket URI'sinin yolu bir içerik dosyasına başvurur.

  3. AssemblyAssociatedContentFileAttribute özniteliği bulunamazsa, yerel derlemede derlenen küme kaynak dosyalarını araştırın.

  4. Paket URI'sinin yoluyla eşleşen bir kaynak dosyası bulunursa, paket URI'sinin yolu bir kaynak dosyasına başvurur.

  5. Kaynak bulunamazsa, dahili olarak oluşturulan Uri geçersiz olur.

URI çözümlemesi, aşağıdakilere başvuran URI'ler için geçerli değildir:

  • Başvuruda bulunılan derlemelerdeki içerik dosyaları: bu dosya türleri WPF tarafından desteklenmez.

  • Başvuruda bulunılan derlemelerdeki katıştırılmış dosyalar: Hem başvuruda bulunılan derlemenin adını hem de ;component son ekini içerdiklerinden, bunları tanımlayan URI'ler benzersizdir.

  • Kaynak dosyaların sitesi: Bunları tanımlayan URI'ler benzersizdir çünkü siteoforigin:/// yetkilisini içeren paket URI'leri tarafından tanımlanabilen tek dosyalar bunlardır.

Paket URI çözümlemesinin izin verdiği basitleştirmelerden biri, kodun kaynak ve içerik dosyalarının konumlarından biraz bağımsız olmasıdır. Örneğin, yerel derlemede içerik dosyası olarak yeniden yapılandırılmış bir kaynak dosyanız varsa, kaynağın paket URI'si, paket URI'sini kullanan kodla aynı kalır.

Paket URI'leri ile programlama

Birçok WPF sınıfı, aşağıdakiler dahil olmak üzere paket URI'leriyle ayarlanabilen özellikler uygular:

Bu özellikler hem işaretleme hem de koddan ayarlanabilir. Bu bölümde hem temel hem de genel senaryo örnekleri gösterilmektedir.

İşaretlemede Paket URI'lerini Kullanma

Paket URI'si, paket URI'sine sahip bir özniteliğin öğesi ayarlanarak işaretlemede belirtilir. Örneğin:

<element attribute="pack://application:,,,/File.xaml" />

Tablo 1'de, işaretlemede belirtebileceğiniz çeşitli mutlak paket URI'leri gösterilmektedir.

Tablo 1: İşaretlemede Mutlak Paket URI'leri

Dosya Mutlak paket URI'si
Kaynak dosyası - yerel derleme "pack://application:,,,/ResourceFile.xaml"
Alt dizindeki kaynak dosyası - yerel montaj "pack://application:,,,/Subfolder/ResourceFile.xaml"
Kaynak dosyası - başvuruda bulunılan derleme "pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml"
Başvuruda bulunılan derlemenin alt klasöründeki kaynak dosyası "pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
Sürümlü başvurulan derlemede kaynak dosyası "pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml"
İçerik dosyası "pack://application:,,,/ContentFile.xaml"
Alt klasördeki içerik dosyası "pack://application:,,,/Subfolder/ContentFile.xaml"
Kaynak dosya sitesi "pack://siteoforigin:,,,/SOOFile.xaml"
Alt klasördeki kaynak dosyanın sitesi "pack://siteoforigin:,,,/Subfolder/SOOFile.xaml"

Tablo 2'de, işaretlemede belirtebileceğiniz çeşitli göreli paket URI'leri gösterilmektedir.

Tablo 2: İşaretlemede Göreli Paket URI'leri

Dosya Göreli paket URI'si
Yerel uygulama derlemesindeki kaynak dosyası "/ResourceFile.xaml"
Yerel derlemenin alt klasöründeki kaynak dosyası "/Subfolder/ResourceFile.xaml"
Başvuruda bulunılan derlemedeki kaynak dosyası "/ReferencedAssembly;component/ResourceFile.xaml"
Başvuruda bulunılan derlemenin alt klasöründeki kaynak dosyası "/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
İçerik dosyası "/ContentFile.xaml"
Alt klasördeki içerik dosyası "/Subfolder/ContentFile.xaml"

Kodda Paket URI'lerini Kullanma

Uri sınıfını başlatıp paket URI'sini oluşturucuya parametre olarak geçirerek kodda bir paket URI'si belirtirsiniz. Bu, aşağıdaki örnekte gösterilmiştir.

Uri uri = new Uri("pack://application:,,,/File.xaml");

Varsayılan olarak, Uri sınıfı paket URI'lerini mutlak olarak kabul eder. Sonuç olarak, göreli paket URI'siyle Uri sınıfının bir örneği oluşturulduğunda bir hata meydana gelir.

Uri uri = new Uri("/File.xaml");

Neyse ki, Uri sınıf oluşturucusunun Uri(String, UriKind) aşırı yüklemesi, paket URI'sinin mutlak mı yoksa göreli mi olduğunu belirtmenize olanak sağlamak için UriKind türünde bir parametre kabul eder.

// Absolute URI (default)
Uri absoluteUri = new Uri("pack://application:,,,/File.xaml", UriKind.Absolute);
// Relative URI
Uri relativeUri = new Uri("/File.xaml",
                        UriKind.Relative);

Sağlanan paket URI'sinin biri veya diğeri olduğundan emin olduğunuzda yalnızca Absolute veya Relative belirtmeniz gerekir. Kullanılan paket URI'sinin türünü bilmiyorsanız (örneğin, kullanıcı çalışma zamanında bir paket URI'sini girdiğinde) bunun yerine RelativeOrAbsolute kullanın.

// Relative or Absolute URI provided by user via a text box
TextBox userProvidedUriTextBox = new TextBox();
Uri uri = new Uri(userProvidedUriTextBox.Text, UriKind.RelativeOrAbsolute);

Tablo 3'te, System.Urikullanarak kodda belirtebileceğiniz çeşitli göreli paket URI'leri gösterilmektedir.

Tablo 3: Kodda Mutlak Paket URI'leri

Dosya Mutlak paket URI'si
Kaynak dosyası - yerel derleme Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);
Alt klasördeki kaynak dosyası - yerel derleme Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);
Kaynak dosyası - referans alınan derleme Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);
Başvuruda bulunılan derlemenin alt klasöründeki kaynak dosyası Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);
Sürüm denetimli başvurulmuş derlemede kaynak dosyası Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);
İçerik dosyası Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);
Alt klasördeki içerik dosyası Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);
Kaynak dosya sitesi Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);
Alt klasördeki kaynak dosyanın sitesi Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);

Tablo 4,System.Urikullanarak kodda belirtebileceğiniz çeşitli göreli paket URI'lerini gösterir.

Tablo 4: Kodda Göreli Paket URI'leri

Dosya Göreli paket URI'si
Kaynak dosyası - yerel derleme Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);
Alt klasörde kaynak dosyası - yerel derleme Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);
Kaynak dosyası - başvuruda bulunılan derleme Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);
Alt klasörde bulunan kaynak dosyası - atıfta bulunulan derleme Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);
İçerik dosyası Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);
Alt klasördeki içerik dosyası Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);

Ortak Paket URI Senaryoları

Önceki bölümlerde kaynak, içerik ve kaynak dosyalarının sitesini tanımlamak için paket URI'lerinin nasıl oluşturılacağı açıklanmıştır. WPF'de, bu yapılar çeşitli şekillerde kullanılır ve aşağıdaki bölümlerde çeşitli yaygın kullanımlar ele alınıyor.

Uygulama Başlatıldığında Gösterilecek Kullanıcı Arabirimini Belirtme

StartupUri bir WPF uygulaması başlatıldığında gösterilecek ilk kullanıcı arabirimini belirtir. Tek başına uygulamalar için kullanıcı arabirimi, aşağıdaki örnekte gösterildiği gibi bir pencere olabilir.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="MainWindow.xaml" />

Aşağıdaki örnekte gösterildiği gibi, tek başına uygulamalar ve XAML tarayıcı uygulamaları (XBAP'ler) ilk kullanıcı arabirimi olarak bir sayfa da belirtebilir.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml" />

Uygulama tek başına bir uygulamaysa ve StartupUriile bir sayfa belirtilirse WPF, sayfayı barındırmak için bir NavigationWindow açar. XBAP'ler için sayfa ana bilgisayar tarayıcısında gösterilir.

Aşağıdaki örnekte bir sayfaya nasıl gidildi gösterilmektedir.

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  WindowTitle="Page With Hyperlink"
  WindowWidth="250"
  WindowHeight="250">
<Hyperlink NavigateUri="UriOfPageToNavigateTo.xaml">
  Navigate to Another Page
</Hyperlink>
</Page>

WPF'de gezinmenin çeşitli yolları hakkında daha fazla bilgi için bkz. Gezintiye Genel Bakış.

Bir Pencere Simgesi Belirleme

Aşağıdaki örnekte, bir pencerenin simgesini belirtmek için URI'nin nasıl kullanılacağı gösterilmektedir.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.MainWindow"
    Icon="WPFIcon1.ico">
</Window>

Daha fazla bilgi için bkz. Icon.

Görüntü, Ses ve Video Dosyalarını Yükleme

WPF, uygulamaların aşağıdaki örneklerde gösterildiği gibi tümü tanımlanıp paket URI'leri ile yüklenebilen çok çeşitli medya türlerini kullanmasına olanak tanır.

<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/bee.wmv" />
<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/ringin.wav" />
<Image Source="Images/Watermark.png" />

Medya içeriğiyle çalışma hakkında daha fazla bilgi için bkz. Grafik ve Multimedya.

Kaynak Sitesinden Kaynak Sözlüğü Yükleme

Kaynak sözlükleri (ResourceDictionary), uygulama temalarını desteklemek için kullanılabilir. Tema oluşturmanın ve yönetmenin bir yolu, bir uygulamanın kaynak sitesinde bulunan kaynak sözlükleri olarak birden çok tema oluşturmaktır. Bu, bir uygulamayı yeniden derlemeden ve yeniden dağıtmadan temaların eklenmesini ve güncelleştirilmesini sağlar. Bu kaynak sözlükleri, aşağıdaki örnekte gösterilen paket URI'leri kullanılarak tanımlanabilir ve yüklenebilir.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml">
  <Application.Resources>
    <ResourceDictionary Source="pack://siteoforigin:,,,/PageTheme.xaml" />
  </Application.Resources>
</Application>

WPF'deki temalara genel bakış için bkz. Stil Oluşturma ve Şablon Oluşturma.

Ayrıca bkz.

  • WPF Uygulama Kaynağı, İçeriği ve Veri Dosyaları