Aracılığıyla paylaş


WPF İçinde URI'leri Paketleme

De Windows Presentation Foundation (WPF), uniform resource identifiers (URIs) tanıtmak ve birçok şekilde, aşağıdakileri içeren dosyaları yüklemek için kullanılan:

  • Belirtme user interface (UI) gösterme, bir uygulamanın ilk başlar.

  • Resimler yükleniyor.

  • Sayfaları için gezinme.

  • Çalıştırılabilir olmayan veri dosyaları yükleniyor.

Ayrıca, URIs tanımlamak ve bir çeşitli konumlardan, aşağıdakileri içeren dosyaları yüklemek için kullanılabilir:

  • Geçerli birleştirme.

  • Başvuru yapılan bir derleme.

  • Bir konuma göre bir derleme.

  • Kaynak uygulama sitesi.

Tanımlama ve bu tür dosyaları yüklenirken bu konumlardan tutarlı bir mekanizma sağlamak için WPF 'ın genişletilebilirliği kullanır pack URI düzeni. Bu konuda düzeni'ne genel bakış sağlar, paketi nasıl kapsayan URIs senaryolar, çeşitli mutlak ve göreli anlatılır URIs ve URI gösteren pack kullanma önce çözüm URIs biçimlendirme hem kodu.

Bu konu aşağıdaki bölümleri içerir.

  • Paketi URI düzeni
  • Kaynak dosya paketi URI'ları
  • Dosya paketi URI'ları içerik
  • Başlangıç paketi URI'ları sitesi
  • Sayfa dosyası
  • Mutlak vs.Göreli Pack URI'ları
  • URI çözüm paketi
  • Paketi URI'ları ile programlama
  • İlgili Konular

Paketi URI düzeni

Paketi URI düzeni tarafından kullanılan Open Packaging Conventions düzenleme ve içeriğin tanımlanması için bir modeli açıklar (opc) belirtimi. Paketler ve bölümleri, bu modelin anahtar öğeleri, burada bir paket bir mantıksal bir veya daha fazla mantıksal kapsayıcıdır bölümleri. Aşağıdaki şekil bu kavramı gösterir.

Paket ve Parçalar diyagramı

Bölümleri tanımlamak için rfc 2396'ın genişletilebilirliği opc belirtimini kullanır (Tekdüzen Kaynak tanımlayıcıları (URI): Paketi tanımlamak için genel sözdizimi) URI düzeni.

Tarafından belirtilen düzeni bir URI , önek tarafından; tanımlanmış HTTP, ftp ve dosya iyi bilinen örnektir. Paketi URI şemasını kullanan "pack" onun düzeni olarak ve iki bileşeni içerir: Yetki ve yolu. Bir paketi biçimi şudur URI.

paketi: / /yetkilisi/yol

Yetkilisi , bir bölümü içeren paketin türünü belirtir iken yol bir bölümü bir paket içindeki konumunu belirtir.

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

Paket, yetkili ve yol arasındaki ilişki

Paketler ve bölümleri için uygulamaları ve dosyaları bir uygulama (paket) dahil olmak üzere bir veya daha fazla dosyaları (parça), burada içerebilir, benzer:

  • Yerel birleştirme derlenmiş kaynak dosyaları.

  • Başvuru yapılan bir derleme derlenmiş kaynak dosyaları.

  • Başvuru bir derleme derlenmiş kaynak dosyaları.

  • İçerik dosyaları.

  • Kaynak dosyaları site.

Bu tür dosyaları, erişmek için WPF iki yetkilileri destekler: Uygulama: / / / ve siteoforigin: / / /. Uygulama: / / / yetkilisi kaynak ve içerik dosyaları dahil, derleme zamanında bilinen uygulama veri dosyalarını tanımlar. Siteoforigin: / / / yetki site kaynağı dosyalarını tanımlar. Her yetki kapsamını aşağıdaki çizimde gösterilmiştir.

Paket URI diyagramı

NotNot

Bir paketi yetkilisi bileşeni URI bir katıştırılmış olan URI bir pakete işaret ve rfc 2396 uymalıdır.Ayrıca, "/" karakter yerine, birlikte "," karakter ve "%" gibi ayrılmış karakterler ve "?" konulmalıdır.Ayrıntılar için opc bakın.

Aşağıdaki bölümlerde açıklanmaktadır paketi nasıl URIs kullanarak bu iki yetkilileri birlikte uygun yolları tanımlama kaynak, içeriği ve site kaynak dosyaları.

Kaynak dosya paketi URI'ları

Kaynak dosyaları olarak yapılandırılmış olan MSBuild Resource maddeler ve olan derlenmiş derlemeleri. WPFİnşaat paketinin desteklediği URIs , yerel birleştirme içine derlenmiş veya yerel bir derleme başvurulan derleme içine derlenmiş kaynak dosyaları tanımlamak için kullanılabilir

Yerel birleştirme kaynak dosyası

Paketi URI bir kaynak için yerel derleme derlenmiş dosya aşağıdaki yetkilisi ve yol kullanır:

  • Yetki: Uygulama: / / /.

  • Yol: Yerel birleştirme proje klasörü kök göreli olarak, yola birlikte kaynak dosyanın adı.

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML kaynak dosyası bulunan kök dizinindeki yerel birleştirme proje klasörüne gidin.

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

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML kaynak dosyası bulunan bir alt klasör yerel birleştirme proje klasörüne gidin.

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

Başvurulan derleme kaynak dosyası

Paketi URI için kaynağın başvuru yapılan bir derleme derlenmiş dosya aşağıdaki yetkilisi ve yol kullanır:

  • Yetki: Uygulama: / / /.

  • Yol: Başvuru yapılan bir derleme derlenmiş bir kaynak dosyasının adıdır. Yol, aşağıdaki biçime uymalıdır:

    AssemblyShortName;Version];PublicKey; bileşen /yol

    • AssemblyShortName: başvuru yapılan bir derleme için kısa ad.

    • ;Sürüm [isteğe bağlı]: Kaynak dosyayı içeren başvuru yapılan bir derleme sürümünü. Bu kısa aynı ada sahip iki veya daha fazla Başvurulan derlemeler yüklü olduğunda kullanılır.

    • ;PublicKey [isteğe bağlı]: başvuru yapılan bir derleme imzalamak için kullanılan ortak anahtar. Bu kısa aynı ada sahip iki veya daha fazla Başvurulan derlemeler yüklü olduğunda kullanılır.

    • ; Bileşen: Başvurulan derleme yerel derlemesinden başvuruda bulunulan belirtir.

    • /Path: Başvurulan derlemenin proje köküne göreceli olarak, yol dahil olmak üzere kaynak dosyasının adıdır.

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML kaynak dosyası bulunan kök dizinindeki başvurulan derlemenin proje klasörüne gidin.

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

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML kaynak dosyası bulunan bir alt klasör içinde bulunulan birleştirme proje klasörüne gidin.

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

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML başvurulan, sürüme özgü bir derlemenin proje klasörünü kök klasöründe bulunan kaynak dosyası

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

Unutmayın paketi URI başvurulan derleme kaynak dosyalarının sözdizimleri uygulama ile yalnızca kullanılabilir: / / / yetkilisi. Örneğin, aşağıdakileri de desteklenmiyor WPF.

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

Dosya paketi URI'ları içerik

Paketi URI bir içerik dosyası aşağıdaki yetkilisi ve yolu kullanan:

  • Yetki: Uygulama: / / /.

  • Yol: Onun yolu uygulamanın ana yürütülebilir derlemenin dosya sistemi konumu da dahil olmak üzere içerik dosyası adı.

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML İçerik dosyası bulunan aynı klasörde yürütülebilir bir derleme.

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

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML İçerik dosyası bulunan bir alt klasör olan göreli olarak uygulamanın yürütülebilir derleme.

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

NotNot

HTMLİçerik dosyaları için gezindirilemiyorsa.URI Düzeni yalnızca gezinti destekler HTML dosyalarının bulunduğu sitesindeki kaynağı.

Başlangıç paketi URI'ları sitesi

Paketi URI için kaynak site dosyası aşağıdaki yetkilisi ve yol kullanır:

  • Yetki: siteoforigin: / / /.

  • Yol: Site yolu konumuna içinden yürütülebilir birleştirme başlatıldı dahil olmak üzere, kaynak dosyasının adıdır.

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML site yürütülebilir derlemeyi başlattı hangi konumda depolanan kaynak dosyasının.

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

Paketi aşağıdaki örnekte gösterildiği URI için bir XAML sitesi, uygulamanın yürütülebilir derlemeyi başlattı, konuma göre alt depolanan kaynak dosyasının.

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

Sayfa dosyası

XAMLolarak yapılandırılmış dosyalar MSBuild Page öğeleri montajları ile aynı şekilde içine derlenmişkaynak dosyaları. Sonuç olarak, MSBuild Page öğeleri paketi kullanılarak belirlenebilir URIs için kaynak dosyaları.

Türleri XAML dosyaları genellikle yapılandırılmış olan olarak MSBuild Page kendi kök öğesi olarak aşağıdaki öğelere sahip:

Mutlak vs.Göreli Pack URI'ları

Tam bir paketi URI düzeni, yetki ve yolunu içerir ve mutlak bir paketi kabul URI. Geliştiriciler, bir basitleştirme olarak XAML öğeleri genellikle göreli Pack uygun öznitelikleri ayarlamak için izin URIyolu içerir

Örneğin, aşağıdaki mutlak pack düşünün URI kaynak dosyasının yerel bir derleme.

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

Göreli pack URI Bu kaynağa başvurur dosya olacak aşağıdaki.

/ResourceFile.xaml

NotNot

Kaynak dosyalarının sitesi olmadığından montajları ile ilişkili, bunlar yalnızca mutlak paketiyle baþvurulabilir URIs.

Varsayılan olarak, göreli bir paketi URI olarak kabul edilir göreli konumuna biçimlendirme veya kod içeren başvuru. Baştaki ters bölü işareti kullanılır, ancak göreli pack URI başvuru göreli köküne dikkate sonrauygulama. Ö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 içeriyorsa, bir URI , başvuran kök\SubFolder\Page2.xaml, başvuru aşağıdaki göreli paketi kullanabilirsiniz URI.

Page2.xaml

Page1.XAML içeriyorsa, bir URI , başvuran kök\Page2.xaml, başvuru aşağıdaki göreli paketi kullanabilirsiniz URI.

/Page2.xaml

URI çözüm paketi

Paketi biçiminin URIs yaptığı mümkün olduğu paketi URIs farklı görünmeyeceğinden dosya türleri için. Örneğin, aşağıdaki mutlak pack düşünün URI.

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

Bu mutlak paketi URI bakın ya da bir kaynak dosyada yerel birleştirme veya içerik bir dosya. Aynı için aşağıdaki göreli doğrudur URI.

/ResourceOrContentFile.xaml

Belirlemek için, dosya türü, bir paketi URI başvurduğu, WPF çözümler URIs kaynak dosyalarını yerel derlemeler ve aşağıdaki Buluşsal yöntemler kullanarak içerik dosyaları için:

  1. Derleme meta verilerini araştırması bir AssemblyAssociatedContentFileAttribute paketi eşleştirir öznitelik URI.

  2. AssemblyAssociatedContentFileAttribute Özniteliği bulunduğunda, paketi yolunu URI başvurduğu içerik bir dosya.

  3. AssemblyAssociatedContentFileAttribute Öznitelik bulunamadı, yoklama kümesi kaynak dosyalarını yerel bir derleme derlenmiş

  4. Paketi yolunu eşleşen kaynak dosyası, URI bulunduğunda, paketi yolunu URI başvurduğu bir kaynak dosyası.

  5. Kaynak bulunamazsa, dahili olarak oluşturulan Uri değil.

URIçözüm için geçerli değildir URIs şuna bakın:

  • Başvurulan derlemeler içerik dosyaları: Bu dosya türlerini desteklemediği WPF.

  • Başvurulan derlemeler katıştırılmış dosyalar: URIsbunları tanımlamak her iki başvuru yapılan bir derleme adını içerdiğinden benzersiz olan ve ;component soneki.

  • Site kaynak dosyaları: URIsbunları tanımlamak paketi tarafından tanımlanan sadece dosyaları oldukları için benzersiz olan URIs siteoforigin içerir: / / / yetkilisi.

Paketi bir basitleştirme URI çözüm sağlayan kaynak ve konumu biraz bağımsız olması kod içiniçerik dosyaları. Örneğin, paketi bir içerik dosyası olarak yeniden yapılandırılır yerel birleştirme kaynak dosyası varsa, URI kaynak kalır aynı, mu kod, kullandığı pack URI.

Paketi URI'ları ile programlama

Birçok WPF sınıfları Pack ayarlanabilir özellikleri uygulamak URIsdahil:

Bu özellikleri biçimlendirme hem kodu ayarlayabilirsiniz. Bu bölümde genel senaryoları örnekleri gösterir ve her ikisi için de temel yapısının gösterilmiştir.

İşaretlemede Pack URI'ları kullanma

Bir paketi URI Pack özniteliğin öğenin ayarlayarak biçimlendirme içinde belirtilen URI. For example:

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

Tablo 1 göstermektedir çeşitli mutlak pack URIs belirlediğiniz biçimlendirme.

Table 1: Mutlak Pack URI içindeki biçimlendirme

File

Mutlak packURI

Kaynak dosya - yerel birleştirme

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

Alt - yerel birleştirme kaynak dosyası

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

Kaynak dosya - başvurulan derleme

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

Kaynak dosyasında başvurulan derleme alt

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

Sürüm bilgisi kaynak dosyasında başvurulan derleme

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

İçerik dosyası

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

Alt içerik dosyası

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

Site kaynak dosyası

"pack://siteoforigin:,,,/SOOFile.xaml"

Kaynak dosyasının alt site

"pack://siteoforigin:,,,/Subfolder/SOOFile.xaml"

Tablo 2 göstermektedir çeşitli göreli pack URIs belirlediğiniz biçimlendirme.

Table 2: Göreli Pack URI içindeki biçimlendirme

File

Göreli packURI

Yerel birleştirme kaynak dosyası

"/ResourceFile.xaml"

Yerel birleştirme alt kaynak dosyası

"/Subfolder/ResourceFile.xaml"

Kaynak dosyasında başvurulan derleme

"/ReferencedAssembly;component/ResourceFile.xaml"

Kaynak dosyasında başvurulan derleme alt

"/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"

İçerik dosyası

"/ContentFile.xaml"

Alt içerik dosyası

"/Subfolder/ContentFile.xaml"

Kod paketi URI'ları kullanma

Bir paket belirtin URI başlatmasını tarafından kod Uri sınıf ve iletme paketi URI parametre olarakkurucu. Aşağıdaki örnekte uygulaması gösterilmiştir.

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

Varsayılan olarak, Uri pack sınıfı dikkate URIs olacak mutlak. Sonuç olarak, özel durum örneği olduğunda oluşturulur Uri göreli Pack sınıfı oluşturuldu URI.

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

Neyse ki, Uri(String, UriKind) , aşırı Uri sınıf yapıcısı türünde bir parametre kabul eder UriKind belirtmenize izin veren bir paket olup olmadığını URI mutlak veya göreli.

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

Yalnızca belirttiğiniz Absolute veya Relative olduğunuzda emin sağlanan pack URI biri veya diğeri. Paketi türünü bilmiyorsanız, URI kullanılan, bir kullanıcı, bir paketi girdiğinde gibi URI çalışma zamanında kullanmak RelativeOrAbsolute bunun yerine.

// 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 göstermektedir çeşitli göreli pack URIs kod kullanarak belirtebilirsiniz, System.Uri.

Table 3: Kodda mutlak Pack URI'ler

File

Mutlak packURI

Kaynak dosya - yerel birleştirme

Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);

Alt - yerel birleştirme kaynak dosyası

Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);

Kaynak dosya - başvurulan derleme

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);

Kaynak dosyasında başvurulan derleme alt

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);

Sürüm bilgisi kaynak dosyasında başvurulan derleme

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 içerik dosyası

Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);

Site kaynak dosyası

Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);

Kaynak dosyasının alt site

Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);

Tablo 4'te gösterilmektedir çeşitli göreli pack URIs kod kullanarak belirtebilirsiniz, System.Uri.

Table 4: Kod içinde göreli Pack URI'ler

File

Göreli packURI

Kaynak dosya - yerel birleştirme

Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);

Alt - yerel birleştirme kaynak dosyası

Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);

Kaynak dosya - başvurulan derleme

Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);

Alt - başvurulan derleme kaynak dosyası

Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);

İçerik dosyası

Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);

Alt içerik dosyası

Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);

Paketi URI senaryoları

Önceki bölümlerde paketi nasıl ele URIs tanımlama kaynağı, içeriği ve site kaynak dosyaları. De WPF, bu yapısının çeşitli şekillerde kullanılır ve aşağıdaki bölümlerde ele birkaç yaygın kullanımları.

Bir uygulama baþladýðýnda göstermek için UI belirtme

StartupUriilk belirtir UI ne zaman göstermek için bir WPF uygulama başlatıldığında. Tek başına çalışan uygulamaları için UI olabilir bir pencere gibi gösterildiği aşağıdaki örnek.

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

Tek başına çalışan uygulamaları ve XAML browser applications (XBAPs) de belirtebilirsiniz ilk kullanıcı Arabirimi olarak bir sayfa olarak gösterilen aşağıdaki örnek.

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

Uygulama tek başına bir uygulamadır ve bir sayfa ile belirtilen StartupUri, WPF açan bir NavigationWindow için ana sayfa. İçin XBAPs, sayfa görüntülenir ana tarayıcı.

Bir sayfaya gezinme

Aşağıdaki örnek bir sayfaya gitmek nasıl gösterir.

<Page
  xmlns="https://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>

Gezinme için çeşitli yollar hakkında daha fazla bilgi için WPFbakın Gezintiye Genel Bakış.

Bir pencereyi simge belirtme

Aşağıdaki örnek bir URI'ý bir pencerenin simge belirtmek için nasıl kullanılacağını gösterir.

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

For more information, see Icon.

Görüntü, ses ve Video dosyalarını yükleme

WPFHepsi algılanabilir ve paketiyle yüklenen ortam türleri, çeşitli uygulamaların verir URIsgibi gösterilen Aşağıdaki örnekler.

<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" />

Ortam içeriği ile çalışma hakkında daha fazla bilgi için bkz: Grafik ve Çoklu Ortam.

Kaynak siteden bir kaynak sözlük yükleme

Kaynak sözlükler (ResourceDictionary) uygulama temaları. desteklemek için kullanılan Oluşturmak ve Temalar yönetmek için bir yol olarak bir uygulamanın başlangıç noktası sitesinde bulunan kaynak sözlükler birden çok temalar oluşturmaktır. Bu eklenen ve güncelleştirilmiş derlenmesine ve uygulama dağıtırken temalar sağlar. Bu kaynak sözlükler belirlenebilir ve paketi kullanılarak yüklenen URIs, hangi gösterilen aşağıdaki örnek.

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

Temalar genel bakış için WPFbakın Stillendirme ve Şablon Oluşturma.

Ayrıca bkz.

Kavramlar

WPF Uygulama Kaynağı, İçerik, ve Veri Dosyaları