x:Key Yönergesi

XAML tanımlı bir sözlükte oluşturulan ve başvurulan öğeleri benzersiz olarak tanımlar. Bir XAML nesne öğesine değer eklemek, bir kaynak sözlüğünde bir kaynağı tanımlamanın en yaygın x:Key yoludur( örneğin, bir WPF ResourceDictionary içinde).

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 kullanmak için bir metin dizesi. Metin dizesi, XamlNameDil Bilgisi ile uyumlu olmalıdır.
markupExtensionUsage İşaretleme uzantısı sınırlayıcıları {} içinde, anahtar olarak kullanmak üzere 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çevelerinde kalan bir kaynak sözlüğü uygulaması tanımlamaz. XAML kaynak sözlüklerinin WPF'de nasıl uygulandığını öğrenmek için bkz. XAML kaynaklarına genel bakış (WPF .NET).

XAML 2006 ve x:Key WPF'de öznitelik olarak sağlanmalıdır. Yine de dize olmayan anahtarlar kullanabilirsiniz, ancak öznitelik formunda dize olmayan değeri sağlamak için bir işaretleme uzantısı kullanımı gerektirir. XAML 2009 kullanıyorsanız, bir işaretleme uzantısı ara gerektirmeden dizeler dışında nesne türleri tarafından anahtarlı sözlükleri açıkça desteklemek için bir öğesi x:Key olarak belirtilebilir. Bu konudaki "XAML 2009" bölümüne bakın. Açıklamalar bölümünün geri kalanı özel olarak XAML 2006 uygulaması için geçerlidir.

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

Bir uygulama olan üst öğenin alt öğeleri genellikle söz konusu sözlük içinde benzersiz IDictionary bir anahtar değeri belirten bir öznitelik x:Key içermesi gerekir. Çerçeveler, belirli türlerde yerine diğer ad kullanılan anahtar özellikleri kullanabilir; bu tür özellikleri x:Key tanımlayan türler ile öznitelik olarak belirlenmeli. DictionaryKeyPropertyAttribute

belirtmenin kod x:Key eşdeğeri, temel alınan için kullanılan IDictionary anahtardır. Örneğin, WPF'de bir kaynağın işaretlemesinde uygulanan bir, kodunda bir WPF'ye kaynak eklerken parametresinin x:Key key ResourceDictionary.Add değerine ResourceDictionary eşdeğerdir.

WPF Kullanım Notları

WPF gibi bir uygulama olan üst nesnenin alt nesneleri genellikle bir öznitelik içermeli ve anahtar değeri bu sözlük IDictionary ResourceDictionary içinde benzersiz x:Key olmalıdır. Önemli iki özel durum vardır:

Genel WPF XAML uygulama ve uygulama modelinde, anahtar benzersizliği XAML işaretleme derleyicisi tarafından denetlenir. Bunun yerine, eksik veya x:Key teknik değerler, yükleme zamanı XAML ayrıştırıcı hatalarına neden olur. Ancak, Visual Studio WPF için sözlüklerin işlenmesi tasarım aşamasında genellikle bu tür hataları not eder.

Gösterilen söz dizimsinde nesnenin, WPF XAML işlemcisinin bir koleksiyonu doldurmak için bir koleksiyon oluşturma ResourceDictionary biçimine örtülü olduğunu Resources unutmayın. Netlik sağlamak için istense bazı durumlarda (özellik öğesi ile sözlüğü doldurmak içindeki öğeler arasında bir koleksiyon nesnesi öğesi olabilir) olsa da, bir genellikle işaretlemedeki bir öğe olarak açıkça ResourceDictionary Resources sağlanmaz. Bir koleksiyon nesnesinin neden neredeyse her zaman işaretlemede örtülü bir öğe olduğu hakkında bilgi için bkz. Ayrıntılı XAML Söz Dizimi.

WPF XAML uygulamasında, kaynak sözlüğü anahtarlarının işlenmesi soyut sınıf ResourceKey tarafından tanımlanır. Ancak WPF XAML işlemcisi, kullanımlarına bağlı olarak anahtarlar için farklı temel uzantı türleri üretir. Örneğin, bir veya DataTemplate türetilen herhangi bir sınıfın anahtarı ayrı olarak işlendirilir ve ayrı bir nesne DataTemplateKey üretir.

Anahtarlar ve adlar, temel XAML tanımında farklı yönergeleri ve dil öğelerini ( ve ) x:Key x:Name kullanır. Anahtarlar ve adlar, WPF tanımı ve bu kavramların 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ğlanmalıdır ve bir dize değerinden farklı olabilir. Örnek bir WPF senaryosu, değerinin x:Key ComponentResourceKey olmasıdır. Belirli denetimler, stili tamamen değiştirmeden denetimin görünümünü ve davranışını etkileyen özel bir stil kaynağı için bu tür bir stil anahtarını ortaya çıkarır. Bu tür bir anahtar ButtonStyleKey örneğidir.

WPF birleştirilmiş sözlük özelliği, anahtar benzersizliği ve anahtar arama davranışıyla ilgili ek noktalar sağlar. Daha fazla bilgi için bkz. Birleştirilmiş kaynak sözlükleri.

XAML 2009

XAML 2009, öznitelik formunda her x:Key zaman sağlanacak kısıtlamayı gevşetir.

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

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

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ükte verilen için anahtar olarak kullanılan object nesnenin nesne öğesi.
  • Bu tür bir kullanım için kapsayıcı/üst burada gösterilmez. object özel sözlük uygulamasını temsil eden bir nesne öğesinin alt öğesi olması beklenir. keyObject bu özel sözlük uygulaması için anahtar olarak uygun bir nesne örneği (veya bir 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 sözlüğüN XAML'de oluşturulmasının tercih edilen bazı özel sözlük senaryolarında yararlı olabilir. Kaynaklar için dize olmayan anahtarlar kullanan örtülü stiller gibi WPF özellikleri için, anahtarları oluşturma veya belirtmeye yönelik diğer teknikler vardır, bu nedenle bir nesne anahtarı kullanmak gerekli değildir.

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

Silverlight Kullanım Notları

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

Ayrıca bkz.