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:
Bazı WPF türleri sözlük kullanımı için örtük bir anahtar bildirir. Örneğin, ile TargetTypebir Style veya içeren bir DataTemplateDataType, içinde olabilir ResourceDictionary ve örtük anahtarı kullanabilir.
WPF, birleştirilmiş kaynak sözlüğü kavramını destekler. Anahtarlar birleştirilmiş sözlükler arasında paylaşılabilir ve paylaşılan anahtar davranışına kullanılarak FindResourceerişilebilir. Daha fazla bilgi için bkz . Birleştirilmiş kaynak sözlükleri.
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.
.NET Desktop feedback