Aracılığıyla paylaş


x:Key Yönergesi

XAML tanımlı bir sözlükte oluşturulan ve başvuruda bulunılan öğeleri benzersiz olarak tanımlar. Bir XAML nesne öğesine x:Key değeri eklemek, bir kaynak sözlüğündeki bir kaynağı tanımlamanın en yaygın yoludur, örneğin wpf ResourceDictionary.

XAML Öznitelik Kullanımı

<object x:Key="stringKeyValue".../>  
-or-  
<object x:Key="{markupExtensionUsage}".../>  

XAML Öznitelik Kullanımı (WPF'ye özgü)

<object.Resources>  
  <object x:Key="stringKeyValue".../>  
</object.Resources>  
-or-  
<object.Resources>  
  <object x:Key="{markupExtensionUsage}".../>  
</object.Resources>  

XAML Değerleri

Değer Açıklama
stringKeyValue Anahtar olarak kullanılacak metin dizesi. Metin dizesi XamlName Dilbilgisiuygun olmalıdır.
markupExtensionUsage {}işaretleme uzantısı sınırlayıcıları içinde, anahtar olarak kullanılacak bir nesne sağlayan bir işaretleme uzantısı kullanımı. Bkz. Açıklamalar.

Açıklamalar

x:Key XAML kaynak sözlüğü kavramını destekler. Dil olarak XAML, belirli kullanıcı arabirimi çerçevelerine bırakılan bir kaynak sözlüğü uygulaması tanımlamaz. XAML kaynak sözlüklerinin WPF'de nasıl uygulandığı hakkında daha fazla bilgi edinmek için bkz. XAML kaynaklarına genel bakış (WPF .NET).

XAML 2006 ve WPF'de x:Key bir öznitelik olarak sağlanmalıdır. Dize olmayan anahtarları kullanmaya devam edebilirsiniz, ancak bunun için öznitelik biçiminde dize olmayan değeri sağlamak için bir işaretleme uzantısı kullanımı gerekir. XAML 2009 kullanıyorsanız, x:Key bir öğe olarak belirtilebilir; işaretleme uzantısı ara gerektirmeden dizeler dışındaki nesne türleri tarafından anahtarlanan sözlükleri açıkça desteklemek için. Bu konudaki "XAML 2009" bölümüne bakın. Açıklamalar bölümünün geri kalanı özellikle XAML 2006 uygulaması için geçerlidir.

x:Key öznitelik değeri, XamlName Grammar tanımlanan herhangi bir dize olabileceği gibi, işaretleme uzantısı aracılığıyla değerlendirilen bir nesne de olabilir. WPF'den bir örnek için bkz. "WPF Kullanım Notları".

IDictionary bir uygulama olan üst öğenin alt öğeleri genellikle sözlüğe benzersiz bir anahtar değeri belirten bir x:Key özniteliği içermelidir. Çerçeveler, belirli türlerdeki x:Key yerine diğer adla alınan anahtar özellikleri uygulayabilir; bu tür özellikleri tanımlayan türler DictionaryKeyPropertyAttributeile ilişkilendirilmelidir.

x:Key belirtmenin kod eşdeğeri, temel IDictionaryiçin kullanılan anahtardır. Örneğin, WPF'deki bir kaynak için işaretlemeye uygulanan bir x:Key, kaynağı koddaki bir WPF ResourceDictionary eklediğinizde ResourceDictionary.Addkey parametresinin değerine eşdeğerdir.

WPF Kullanım Notları

WPF ResourceDictionarygibi bir IDictionary uygulaması olan üst nesnenin alt nesneleri genellikle bir x:Key özniteliği içermelidir ve anahtar değeri bu sözlük içinde benzersiz olmalıdır. İki önemli özel durum vardır:

Genel WPF XAML uygulama ve uygulama modelinde anahtar benzersizliği XAML işaretleme derleyicisi tarafından denetlenmiyor. Bunun yerine, eksik veya nonunique x:Key değerleri yük süresi XAML ayrıştırıcı hatalarına neden olur. Bununla birlikte, WPF için sözlüklerin Visual Studio işlemesi genellikle tasarım aşamasında bu tür hataları not edebilir.

Gösterilen söz diziminde, ResourceDictionary nesnesinin WPF XAML işlemcisinin bir Resources koleksiyonunu doldurmak için bir koleksiyon oluşturma biçiminde örtük olduğunu unutmayın. ResourceDictionary genellikle işaretlemede açıkça bir öğe olarak sağlanmaz, ancak bazı durumlarda netlik için istenebilir (Resources özellik öğesi ile sözlüğü dolduran öğeler arasında bir koleksiyon nesnesi öğesi olabilir). Bir koleksiyon nesnesinin neden işaretlemede neredeyse her zaman örtük bir öğe olduğu hakkında bilgi için bkz. XAML Söz Dizimi Ayrıntılı.

WPF XAML uygulamasında, kaynak sözlük anahtarlarının işlenmesi ResourceKey soyut sınıfı tarafından tanımlanır. Ancak WPF XAML işlemcisi, kullanımlarına göre anahtarlar için farklı temel uzantı türleri oluşturur. Örneğin, bir DataTemplate veya türetilmiş herhangi bir sınıfın anahtarı ayrı olarak işlenir ve ayrı bir DataTemplateKey nesnesi oluşturur.

Anahtarlar ve adlar, temel XAML tanımında farklı yönergeler ve dil öğeleri (x:Key ve x:Name) kullanır. Anahtarlar ve adlar, bu kavramların WPF tanımı ve uygulaması tarafından farklı durumlarda da kullanılır. Ayrıntılar için bkz. WPF XAML Ad Kapsamları.

Daha önce belirtildiği gibi, bir anahtarın değeri bir işaretleme uzantısı aracılığıyla sağlanabilir ve dize değerinden farklı olabilir. Örnek bir WPF senaryosu, x:Key değerinin ComponentResourceKeyolmasıdır. Bazı denetimler, stili tamamen değiştirmeden bu denetimin görünümünün ve davranışının bir kısmını etkileyen özel bir stil kaynağı için bu türdeki bir stil anahtarını kullanıma sunar. Bu tür bir anahtara örnek olarak ButtonStyleKey.

WPF birleştirilmiş sözlük özelliği, anahtar benzersizliği ve anahtar arama davranışı için dikkat edilmesi gereken ek noktalara sahiptir. Daha fazla bilgi için bkz. Birleştirilmiş kaynak sözlükleri.

XAML 2009

XAML 2009, her zaman öznitelik biçiminde x:Key kısıtlamayı gevşetir.

WPF'de XAML 2009 özelliklerini kullanabilirsiniz, ancak yalnızca işaretleme derlenmemiş XAML için kullanabilirsiniz. WPF için işaretlemeyle derlenmiş XAML ve XAML'nin BAML biçimi şu anda XAML 2009 anahtar sözcüklerini ve özelliklerini desteklememektedir.

XAML 2009 altında, aşağıdaki kullanım aracılığıyla x:Key öğeleri belirtebilirsiniz:

XAML Öğesi Kullanımı (yalnızca XAML 2009)

<object>  
  <x:Key>  
keyObject  
  </x:Key>  
...  
</object>  

XAML Değerleri

Değer Açıklama
keyObject Özel bir sözlükteki belirli bir object için anahtar olarak kullanılan nesnenin nesne öğesi.
  • Bu tür kullanım için kapsayıcı/üst öğe burada gösterilmez. object özel sözlük uygulamasını temsil eden bir nesne öğesinin alt öğesi olması beklenir. keyObject, söz konusu özel sözlük uygulaması için anahtar olarak uygun bir nesne örneği (veya değer türü değeri) olması beklenir.

  • WPF bu kullanımı gerektiren sözlükleri uygulamaz. Nesne anahtarları daha çok XAML dilinin genel bir özelliğidir ve XAML'de sözlüğün oluşturulmasının istendiği belirli özel sözlük senaryoları için yararlı olabilir. Kaynaklar için dize olmayan anahtarları kullanan örtük stiller gibi WPF özellikleri için, anahtarları oluşturmak veya belirtmek için başka teknikler vardır, bu nedenle nesne anahtarı kullanmak gerekli değildir.

  • keyObject, doğrudan nesne örneği yerine nesne öğesi formundaki bir işaretleme uzantısı kullanımı da olabilir.

Silverlight Kullanım Notları

Silverlight için x:Key ayrı olarak belgelenmiştir. Daha fazla bilgi için bkz. XAML Ad Alanı (x:) Dil Özellikleri (Silverlight).

Ayrıca bkz.