x:Name Yönergesi
XAML ad kapsamlarında XAML tanımlı öğeleri benzersiz olarak tanımlar. Çerçeveler API'ler sağlarken veya çalışma zamanında XAML tarafından oluşturulan nesne grafiğine erişen davranışlar uygulandığında XAML ad kapsamları ve bunların benzersizlik modelleri örneklenmiş nesnelere uygulanabilir.
XAML Öznitelik Kullanımı
<object x:Name="XAMLNameValue".../>
XAML Değerleri
XAMLNameValue |
XamlNameDilbilgisi kısıtlamalarına uygun bir dize. |
Açıklamalar
Bir çerçevenin destek programlama modeline uygulandıktan sonra, ad bir nesne başvurusu veya oluşturucu tarafından döndürülen bir örneği tutan x:Name değişkene eşdeğerdir.
Yönerge kullanımının x:Name değeri bir XAML ad kapsamında benzersiz olmalıdır. .NET XAML Hizmetleri API'si tarafından kullanılırken varsayılan olarak, birincil XAML ad kapsamları tek bir XAML üretimi için XAML kök öğesinde tanımlanır ve bu XAML üretimde yer alan öğeleri kapsar. Tek bir XAML üretimi içinde ortaya çıkabilir ek ayrı XAML ad kapsamları, belirli senaryoları ele alan çerçeveler tarafından tanımlanabilir. Örneğin, WPF'de yeni XAML ad kapsamları, bu XAML üretimde de tanımlanan herhangi bir şablon tarafından tanımlanır ve oluşturulur. XAML ad kapsamları (WPF için yazılmış ancak birçok XAML ad kapsam kavramı için uygun) hakkında daha fazla bilgi için bkz. WPF XAML Namescopes.
Genel x:Name olarak, kullanan durumlarda uygulanmamalıdır. x:Key Belirli mevcut çerçevelere göre XAML uygulamaları ile arasında değiştirme kavramlarına neden x:Keyx:Name oldu, ancak bu önerilen bir uygulama değildir. .NET XAML Hizmetleri, veya gibi ad/anahtar bilgilerini işlemede bu tür değiştirme kavramlarını INameScopeDictionaryKeyPropertyAttribute desteklemez.
hem izni hem de x:Name ad benzersizliği zorlama kuralları, belirli uygulama çerçeveleri tarafından tanımlanabilir. Ancak, .NET XAML Hizmetleri ile kullanılabilir olması için, XAML ad kapsam benzersizliği çerçeve tanımları bu belgelerde bilgilerin tanımıyla tutarlı olmalıdır ve bilgilerin uygulandığı yer ile ilgili aynı kuralları INameScope kullanmalıdır. Örneğin, Windows Presentation Foundation (WPF) uygulaması çeşitli işaretleme öğelerini kaynak sözlükleri, sayfa düzeyi XAML, şablonlar ve diğer ertelenen içerik tarafından oluşturulan mantıksal ağaç gibi ayrı aralıklara böler ve ardından bu XAML ad kapsamlarının her biri içinde XAML adı benzersizliğini NameScope zorlar.
.NET XAML Hizmetleri XAML nesne yazıcılarını kullanan özel türler için, bir tür üzerinde ile eşlene x:Name bir özellik belirlenerek veya değiştirilebilir. Bu davranışı tanımlamak için tür tanımı kodunda ile eşleyilen RuntimeNamePropertyAttribute özelliğin adına başvurabilirsiniz. RuntimeNamePropertyAttribute , tür düzeyinde bir özniteliktir.
Using.NET XAML Hizmetleri'ne göre, XAML ad kapsam desteği için destek mantığı arabirimi uygulanarak çerçeveden bağımsız bir şekilde INameScope tanımlanabilir.
WPF Kullanım Notları
XAML, kısmi sınıflar ve arka plan kod kullanan bir WPF uygulaması için standart derleme yapılandırması altında, XAML bir işaretleme derleme derleme görevi tarafından işlendiğinde temel kodda oluşturulan bir alanın adı olur ve bu alan nesneye bir başvuru x:Name tutar. Varsayılan olarak, oluşturulan alan dahilidir. x:FieldModifier özniteliğini belirterek alan erişimini değiştirebilirsiniz. WPF ve Silverlight'ta sıra, işaretleme derlemenin alanı kısmi bir sınıfta tanımladığı ve adladığı, ancak değerin başlangıçta boş olduğu dizidir. Ardından, sınıf oluşturucusu içinde InitializeComponent adlı oluşturulan bir yöntem çağrılır. InitializeComponent , kısmi sınıfın XAML tanımlı bölümünde giriş dizeleri olarak var olan değerlerin her FindNamex:Name biri kullanılarak yapılan çağrılardan oluşur. Daha sonra dönüş değerleri, alan değerlerini XAML ayrıştırmadan oluşturulan nesnelerle doldurmak için benzer adlı alan başvurusuna atanır. yürütmesi, XAML tanımlı bir nesneye herhangi bir başvuruya ihtiyacınız olursa açıkça çağrısı yapmak zorunda kalmadan doğrudan / alan adını kullanarak çalışma zamanı nesne grafiğine InitializeComponentx:Name başvurulmayı mümkün hale FindName sağlar.
Microsoft Visual Basic hedeflerini kullanan ve derleme eylemiyle XAML dosyaları içeren bir WPF uygulaması için, olay işleyicisi temsilcilerinin söz dizimini desteklemek için anahtar sözcüğünü içeren tüm öğelere ekleyen derleme sırasında ayrı bir başvuru özelliği PageWithEventsx:NameHandles oluşturulur. Bu özellik her zaman geneldir. Daha fazla bilgi için bkz. Visual Basic WPF Olay İşleme.
x:Name WpF XAML işlemcisi, sayfanın derleme eylemleri tarafından işaretlemeyle derlenmiş olmadığını (örneğin, bir kaynak sözlüğünde gevşek XAML) olsa bile yükleme zamanında bir XAML ad kapsamlarına bir ad kaydetmek için kullanılır. Bu davranışın bir nedeni, bağlama x:Name için potansiyel olarak gerekli ElementName olmasıdır. Ayrıntılar için bkz. Veri Bağlamaya Genel Bakış.
Daha önce belirtildiği gibi x:Name , Name (veya ) de kullanan durumlarda x:Key uygulanmamalıdır. WPF, kendisini XAML ad kapsamları olarak tanımlamaya yönelik özel bir davranışa sahiptir ancak bu davranışı zorunlu hale etmek için API'ler için Uygulanmadı veya ResourceDictionary null INameScope değerler döndürür. WPF XAML ayrıştırıcısı veya XAML tanımlı bir içinde karşılaşırsa, ad hiçbir Namex:Name XAML ad ResourceDictionary kapsamlarına eklenmez. Bu adı herhangi bir XAML namescope'tan bulmaya çalışırken FindName ve yöntemler geçerli sonuçlar getirmayacak.
x:Name ve Name
ve gibi birkaç önemli temel sınıf için varsayılan XAML ad alanı içinde belirtilen bağımlılık özelliği aynı amaca uygun olduğundan birçok WPF uygulama senaryosu özniteliğinin herhangi bir kullanımını x:NameNameFrameworkElementFrameworkContentElement önlemektedir. Hala çerçeve düzeyinde özelliğine sahip bir öğeye kod erişiminin önemli olduğu bazı yaygın XAML ve WPF Name senaryoları vardır. Örneğin, belirli animasyon ve görsel görsel destek sınıfları bir özelliği desteklemez, ancak animasyonu kontrol etmek için genellikle Name kodda başvurulları gerekir. Daha sonra koddan başvuru yapmak için XAML'de oluşturulan zaman çizelgeleri ve dönüşümler üzerinde x:Name bir öznitelik olarak belirtebilirsiniz.
sınıfında bir özellik olarak kullanılabilirse ve öznitelikler olarak birbirinin yerine kullanılabilirse, ancak her ikisi de aynı öğede belirtilirse ayrıştırma özel Name durumu ortaya çıkan bir Namex:Name durumdur. XAML işaretleme derlenmişse, işaretleme derlemesi üzerinde özel durum oluşur, aksi takdirde yükleme sırasında oluşur.
Name XAML özniteliği söz dizimi kullanılarak ve kodda kullanılarak ayarlandırabilirsiniz; ancak kodda özelliğinin ayarlanmış SetValue olması, XAML'nin zaten yüklü olduğu çoğu durumda XAML ad kapsamında temsili alan başvurusu Name oluşturmaz. Kodda ayarlamayı Name denemenin yerine, NameScope uygun namescope'a göre koddan yöntemleri kullanın.
Name , iç metin ile özellik öğesi söz dizimi kullanılarak da ayarlansa da, bu yaygın bir durumdur. Buna karşılık, XAML özellik öğesi söz dizimsinde veya kullanılarak kodda ayar olamaz; yalnızca bir yönerge olduğundan nesnelerde öznitelik söz x:NameSetValue dizimi kullanılarak ayarlanabilir.
Silverlight Kullanım Notları
x:Name Silverlight için ayrı belgelendirilir. Daha fazla bilgi için bkz. XAML Ad Alanı (x:) Dil Özellikleri (Silverlight).