x:Key Yönergesi

XAML tanımlı bir sözlükte oluşturulan ve başvuruda bulunılan öğeleri benzersiz olarak tanımlar. x:Key Bir XAML nesne öğesine değer eklemek, bir kaynak sözlüğündeki bir kaynağı tanımlamanın en yaygın yoludur, örneğin WPF ResourceDictionaryiç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 Tanım
stringKeyValue Anahtar olarak kullanılacak metin dizesi. Metin dizesi XamlName Dilbilgisi ile uyumlu olmalıdır.
markupExtensionUsage İşaretlemeyi uzantı 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 öznitelik x:Key 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 işaretleme uzantısı ara gerektirmeden dizeler dışındaki nesne türleri tarafından anahtarlanan sözlükleri açıkça desteklemek için bir öğe olarak belirtilebilir. 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.

özniteliği değerix:Key, 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 IDictionary üst öğenin alt öğeleri genellikle bu sözlük içinde benzersiz bir x:Key anahtar değeri belirten bir öznitelik içermelidir. Çerçeveler belirli türlerle değiştirilecek x:Key diğer adlara sahip anahtar özellikleri uygulayabilir; bu özellikleri tanımlayan türler ile DictionaryKeyPropertyAttributeilişkilendirilmelidir.

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

WPF Kullanım Notları

WPF ResourceDictionarygibi bir uygulama olan bir IDictionary üst nesnenin alt nesneleri genellikle bir x:Key öznitelik 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 teklik x:Key olmayan değerler 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 nesnenin ResourceDictionary WPF XAML işlemcisinin bir koleksiyonu doldurmak Resources için nasıl bir koleksiyon ürettiği konusunda örtük olduğunu unutmayın. A ResourceDictionary genellikle işaretlemedeki bir öğe olarak açıkça sağlanmaz, ancak bazı durumlarda netlik için isteniyorsa olabilir (özellik öğesi ile sözlüğü dolduran öğeler arasında Resources bir koleksiyon nesnesi öğesi olabilir). Bir koleksiyon nesnesinin işaretlemede neredeyse her zaman örtük bir öğe olması 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 tarafından ResourceKey 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ş bir sınıfın anahtarı ayrı olarak işlenir ve ayrı DataTemplateKey bir nesne oluşturur.

Anahtarlar ve adlar, temel XAML tanımında farklı yönergeler ve dil öğeleri (x:Key yerine 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. Wpf senaryosuna örnek olarak değerinin x:Key ComponentResourceKey olması verilebilir. 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 sağlanan kısıtlamayı x:Key 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, öğeleri aşağıdaki kullanım aracılığıyla belirtebilirsiniz x:Key :

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

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

XAML Değerleri

Değer Tanım
keyObject Özel bir sözlükte verilen 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 bir sözlük uygulamasını temsil eden bir nesne öğesinin alt öğesi olması beklenir. keyObject belirli bir özel sözlük uygulaması için anahtar olarak uygun bir nesne örneği (veya değer türündeki bir değer) 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ı

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

Ayrıca bkz.