Aracılığıyla paylaş


WPF XAML için XAML Ad Alanları ve Ad Alanı Eşlemesi

Bu konu başlığında, WPF XAML dosyasının kök etiketinde sıklıkla bulunan iki XAML ad alanı eşlemesinin varlığı ve amacı açıklanmaktadır. Ayrıca, kendi kodunuzda ve/veya ayrı derlemelerde tanımlanan öğeleri kullanmak için benzer eşlemelerin nasıl üretildiğini açıklar.

XAML Ad Alanı nedir?

XAML ad alanı, xml ad alanı kavramının bir uzantısıdır. XAML ad alanı belirtme teknikleri, XML ad alanı söz dizimini, URI'leri ad alanı tanımlayıcıları olarak kullanma kuralını, aynı işaretleme kaynağından birden çok ad alanına başvurmak için bir araç sağlamak için ön ekleri kullanma kuralını kullanır. XML ad alanının XAML tanımına eklenen birincil kavram, XAML ad alanının hem işaretleme kullanımları için benzersizlik kapsamını hem de işaretleme varlıklarının belirli CLR ad alanları ve başvurulan derlemeler tarafından nasıl desteklenebileceklerini etkilemesidir. Bu ikinci değerlendirme, XAML şema bağlamı kavramından da etkilenir. Ancak WPF'nin XAML ad alanlarıyla nasıl çalıştığına ilişkin amaçlar doğrultusunda genellikle XAML ad alanlarını varsayılan XAML ad alanı, XAML dili ad alanı ve XAML işaretlemeniz tarafından doğrudan belirli yedekleme CLR ad alanlarına ve başvurulan derlemelere eşlenen diğer XAML ad alanları olarak düşünebilirsiniz.

WPF ve XAML Ad Alanı Bildirimleri

Birçok XAML dosyasının kök etiketindeki ad alanı bildirimleri içinde genellikle iki XML ad alanı bildirimi olduğunu görürsünüz. İlk bildirim, genel WPF istemcisi / framework XAML ad alanını varsayılan olarak eşler:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

İkinci bildirim ayrı bir XAML ad alanını eşler ve bunu (genellikle) ön eke eşler x: .

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Bu bildirimler arasındaki ilişki, ön ek eşlemesinin x: XAML dil tanımının parçası olan iç bilgileri desteklemesi ve WPF'nin XAML'yi dil olarak kullanan ve XAML için nesnelerinin sözcük dağarcığını tanımlayan bir uygulama olmasıdır. WPF kelime dağarcığının kullanımları XAML iç kullanımlarından çok daha yaygın olduğundan, WPF sözlüğü varsayılan olarak eşlenir.

x: XAML dili iç desteklerini eşlemeye yönelik ön ek kuralını proje şablonları, örnek kod ve bu SDK'daki dil özelliklerinin belgeleri izler. XAML ad alanı, temel WPF uygulamaları için bile gerekli olan yaygın olarak kullanılan birçok özelliği tanımlar. Örneğin, herhangi bir arka plan kodunu kısmi bir sınıf aracılığıyla bir XAML dosyasına eklemek için ilgili XAML dosyasının kök öğesinde bu sınıfı öznitelik olarak x:Class adlandırmanız gerekir. Veya anahtarlı kaynak olarak erişmek istediğiniz bir XAML sayfasında tanımlanan herhangi bir öğenin söz konusu öğede ayarlanmış özniteliği olmalıdır x:Key . XAML'nin bu ve diğer yönleri hakkında daha fazla bilgi için bkz . WPF'de XAML veya Ayrıntılı XAML Söz Dizimi.

Özel Sınıflara ve Derlemelere Eşleme

STANDART WPF ve XAML iç XAML ad alanlarının ön eklere eşlenmesine benzer şekilde, xml ad alanlarını bir ön ek bildirimi içindeki bir xmlns dizi belirteç kullanarak derlemelere eşleyebilirsiniz.

Söz dizimi aşağıdaki olası adlandırılmış belirteçleri ve aşağıdaki değerleri alır:

clr-namespace: Öğe olarak kullanıma sunma amacıyla ortak türleri içeren derleme içinde bildirilen CLR ad alanı.

assembly= Başvurulan CLR ad alanının bir kısmını veya tümünü içeren derleme. Bu değer genellikle yolu değil derlemenin adıdır ve uzantıyı (.dll veya .exe gibi) içermez. Bu derlemenin yolu, eşlemeye çalıştığınız XAML'yi içeren proje dosyasında proje başvurusu olarak oluşturulmalıdır. Sürüm oluşturma ve tanımlayıcı ad imzalamayı birleştirmek için, assembly değer basit dize adı yerine tarafından AssemblyNametanımlanan bir dize olabilir.

Belirteci değerinden ayıran karakterin clr-namespace iki nokta üst üste (:) ancak belirteci değerinden ayıran karakterin assembly eşittir işareti (=) olduğunu unutmayın. Bu iki belirteç arasında kullanılacak karakter noktalı virgüldür. Ayrıca, bildirimin herhangi bir yerinde boşluk eklemeyin.

Temel Özel Eşleme Örneği

Aşağıdaki kod örnek bir özel sınıf tanımlar:

namespace SDKSample {  
    public class ExampleClass : ContentControl {  
        public ExampleClass() {  
        ...  
        }  
    }  
}  
Namespace SDKSample  
    Public Class ExampleClass  
        Inherits ContentControl  
         ...  
        Public Sub New()  
        End Sub  
    End Class  
End Namespace  

Bu özel sınıf daha sonra proje ayarlarına göre (gösterilmez) olarak adlandırılan SDKSampleLibrarybir kitaplıkta derlenmiş olur.

Bu özel sınıfa başvurmak için, bunu genellikle Visual Studio'daki Çözüm Gezgini kullanıcı arabirimini kullanarak yaptığınız geçerli projenizin başvurusu olarak da eklemeniz gerekir.

Artık sınıf içeren bir kitaplığınız ve proje ayarlarında buna bir başvurunuz olduğuna göre, XAML'de kök öğenizin bir parçası olarak aşağıdaki ön ek eşlemesini ekleyebilirsiniz:

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

Bunların tümünü bir araya getirmek için, kök etiketindeki tipik varsayılan ve x: eşlemeleriyle birlikte özel eşlemeyi içeren XAML ve ardından bu kullanıcı arabiriminde örnek ExampleClass oluşturmak için ön ekli bir başvuru kullanır:

<Page x:Class="WPFApplication1.MainPage"  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary">  
  ...  
  <custom:ExampleClass/>  
...  
</Page>  

Geçerli Derlemelere Eşleme

assembly başvuruda bulunuluyorsa clr-namespace , özel sınıflara başvuran uygulama koduyla aynı derlemede tanımlanıyorsa atlanabilir. Ya da, bu durum için eşdeğer bir söz dizimi, eşittir işaretinden sonra dize belirteci olmadan belirtmektir assembly=.

Özel sınıflar, aynı derlemede tanımlanmışsa sayfanın kök öğesi olarak kullanılamaz. Kısmi sınıfların eşlenmesi gerekmez; Yalnızca uygulamanızdaki bir sayfanın kısmi sınıfı olmayan sınıfların, XAML'de öğe olarak başvurmak istiyorsanız eşlenmesi gerekir.

CLR Ad Alanlarını Derlemedeki XML Ad Alanlarına Eşleme

WPF, birden çok CLR ad alanını tek bir XAML ad alanına eşlemek için XAML işlemcileri tarafından kullanılan bir CLR özniteliğini tanımlar. Bu özniteliği, XmlnsDefinitionAttributederlemeyi oluşturan kaynak kodunda derleme düzeyinde yerleştirilir. WPF derleme kaynak kodu, ve System.Windows.Controlsgibi System.Windows çeşitli ortak ad alanlarını ad alanına eşlemek için http://schemas.microsoft.com/winfx/2006/xaml/presentation bu özniteliği kullanır.

XmlnsDefinitionAttribute iki parametre alır: XML/XAML ad alanı adı ve CLR ad alanı adı. Birden çok CLR ad alanını aynı XML ad alanına eşlemek için birden XmlnsDefinitionAttribute fazla varolabilir. Eşlendikten sonra, bu ad alanlarının üyelerine, kısmi sınıf arka planda kod sayfasında uygun using deyim sağlanarak istenirse tam niteleme olmadan da başvurulabilir. Diğer ayrıntılar için bkz. XmlnsDefinitionAttribute.

XAML Şablonlarından Ad Alanlarını ve Diğer Ön Ekleri Tasarım Aracı

WPF XAML için geliştirme ortamları ve/veya tasarım araçlarıyla çalışıyorsanız, XAML işaretlemesinde başka tanımlı XAML ad alanları / ön ekleri olduğunu fark edebilirsiniz.

Visual Studio için WPF Tasarım Aracı genellikle ön ekine d:eşlenmiş bir tasarımcı ad alanı kullanır. WPF için daha yeni proje şablonları, Visual Studio ve diğer tasarım ortamları için WPF Tasarım Aracı arasında XAML değişimini desteklemek için bu XAML ad alanını önceden eşler. Bu tasarım XAML ad alanı, tasarımcıda XAML tabanlı kullanıcı arabirimini yuvarlarken tasarım durumunu kalıcı hale getirmek için kullanılır. Tasarımcıda çalışma zamanı veri kaynaklarını etkinleştiren gibi d:IsDataSourceözellikler için de kullanılır.

Eşlenmiş olarak görebileceğiniz bir diğer önek de şeklindedir mc:. mc: işaretleme uyumluluğu içindir ve XAML'ye özgü olması gerekmeyen bir işaretleme uyumluluk deseni yararlanır. Bir ölçüde, işaretleme uyumluluk özellikleri çerçeveler arasında veya yedekleme uygulamasının diğer sınırları arasında XAML değişimi yapmak, XAML şema bağlamları arasında çalışmak, tasarımcılarda sınırlı modlar için uyumluluk sağlamak vb. için kullanılabilir. İşaretlemeyi uyumluluk kavramları ve BUNLARıN WPF ile ilişkisi hakkında daha fazla bilgi için bkz . İşaretleme Uyumluluğu (mc:) Dil Özellikleri.

WPF ve Derleme Yükleme

WPF için XAML şema bağlamı WPF uygulama modeliyle tümleşir ve bu da CLR tanımlı kavramını AppDomainkullanır. Aşağıdaki dizide, XAML şema bağlamının ve diğer faktörlerin WPF kullanımına AppDomain bağlı olarak derlemeleri yükleme veya çalışma zamanında veya tasarım zamanında türleri bulma işlemini nasıl yorumlandığı açıklanmaktadır.

  1. en son yüklenen derlemeden başlayarak adın AppDomaintüm yönleriyle eşleşen zaten yüklenmiş bir derlemeyi bulmak için aracılığıyla yineleyin.

  2. Ad nitelenmişse, nitelenmiş adı arayın Assembly.Load(String) .

  3. Nitelenmiş bir adın kısa adı + ortak anahtar belirteci, işaretlemenin yüklendiği derlemeyle eşleşiyorsa, bu derlemeyi döndür.

  4. çağrısı Assembly.Load(String)yapmak için kısa ad + ortak anahtar belirtecini kullanın.

  5. Ad nitelenmemişse çağırın Assembly.LoadWithPartialName.

Gevşek XAML 3. Adımı kullanmaz; hiçbir yükleme-from derlemesi yok.

WPF için derlenmiş XAML (XamlBuildTask aracılığıyla oluşturulur) öğesinden AppDomain önceden yüklenmiş derlemeleri kullanmaz (1. Adım). Ayrıca, adın XamlBuildTask çıkışından hiçbir zaman nitelenmemesi gerekir, bu nedenle 5. Adım uygulanmaz.

Derlenmiş BAML (PresentationBuildTask aracılığıyla oluşturulur) tüm adımları kullanır, ancak BAML de nitelenmemiş derleme adları içermemelidir.

Ayrıca bkz.