Aracılığıyla paylaş


x:Name Yönergesi

XAML ad kapsamı içindeki XAML tanımlı öğeleri benzersiz olarak tanımlar. Çerçeveler API'ler sağladığında veya çalışma zamanında XAML tarafından oluşturulan nesne grafiğine erişen davranışlar uyguladığında, XAML ad kapsamları ve bunların benzersizlik modelleri örnek nesnelere uygulanabilir.

XAML Öznitelik Kullanımı

<object x:Name="XAMLNameValue".../>

XAML Değerleri

Değer Açıklama
XAMLNameValue XamlName Dilbilgisikısıtlamalarına uyan bir dize.

Açıklamalar

x:Name bir çerçevenin yedekleme programlama modeline uygulandıktan sonra, ad bir nesne başvurusu veya oluşturucu tarafından döndürülen bir örneği tutan değişkene eşdeğerdir.

x:Name yönergesi kullanımının değeri XAML ad kapsamı içinde benzersiz olmalıdır. .NET XAML Hizmetleri API'si tarafından kullanıldığında varsayılan olarak, birincil XAML ad kapsamı tek bir XAML üretiminin XAML kök öğesinde tanımlanır ve bu XAML üretiminde yer alan öğeleri kapsar. Tek bir XAML üretimi içinde gerçekleşebilecek ek ayrı XAML ad kapsamları, belirli senaryoları ele almak için çerçeveler tarafından tanımlanabilir. Örneğin WPF'de yeni XAML ad kapsamları, bu XAML üretimi üzerinde de tanımlanan herhangi bir şablon tarafından tanımlanır ve oluşturulur. XAML ad kapsamları hakkında daha fazla bilgi için (WPF için yazılmış ancak birçok XAML ad kapsamı kavramı için geçerlidir), bkz. WPF XAML Ad Kapsamları.

Genel olarak, x:Namex:Keykullanan durumlarda uygulanmamalıdır. Belirli mevcut çerçevelere göre XAML uygulamaları, x:Key ile x:Namearasında değiştirme kavramları getirmektedir, ancak bu önerilen bir uygulama değildir. .NET XAML Hizmetleri, INameScope veya DictionaryKeyPropertyAttributegibi ad/anahtar bilgilerini işlerken bu tür değiştirme kavramlarını desteklemez.

x:Name izin verme kuralları ve ad benzersizliği zorlaması, belirli uygulama çerçeveleri tarafından tanımlanabilir. Ancak, .NET XAML Hizmetleri ile kullanılabilir olması için, XAML ad kapsamı benzersizliğinin çerçeve tanımları bu belgedeki INameScope bilgilerin tanımıyla tutarlı olmalı ve bilgilerin uygulandığı yerle ilgili olarak aynı kuralları kullanmalıdır. Örneğin, Windows Presentation Foundation (WPF) uygulaması çeşitli işaretleme öğelerini kaynak sözlükleri, sayfa düzeyi XAML tarafından oluşturulan mantıksal ağaç, şablonlar ve diğer ertelenmiş içerik gibi ayrı NameScope aralıklarına böler ve ardından bu XAML ad kapsamlarının her birinde XAML adı benzersizliğini zorlar.

.NET XAML Hizmetleri XAML nesne yazıcılarını kullanan özel türler için, bir türdeki x:Name eşlenen bir özellik oluşturulabilir veya değiştirilebilir. Tür tanımı kodundaki RuntimeNamePropertyAttribute eşlemek için özelliğin adına başvurarak bu davranışı tanımlarsınız. RuntimeNamePropertyAttribute tür düzeyinde bir özniteliktir.

XAML Hizmetleri Using.NET, XAML ad kapsamı desteği için yedekleme mantığı, INameScope arabirimi uygulanarak çerçevesiz bir şekilde tanımlanabilir.

WPF Kullanım Notları

XAML, kısmi sınıflar ve arka plan kod kullanan bir WPF uygulamasının standart derleme yapılandırması altında, belirtilen x:Name, 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 başvuru içerir. 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 derlemesinin kısmi bir sınıftaki alanı tanımlayıp adlandırması, ancak değerin başlangıçta boş olmasıdır. Ardından, sınıf oluşturucusunun içinden 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 bulunan FindName değerlerinin her birini giriş dizeleri olarak kullanan x:Name çağrılardan oluşur. Daha sonra dönüş değerleri, alan değerlerini XAML ayrıştırma işleminden oluşturulan nesnelerle doldurmak için benzer adlı alan başvurusuna atanır. InitializeComponent yürütülmesi, XAML tanımlı bir nesneye başvurmanız gerektiğinde açıkça x:Name çağırmak zorunda kalmadan doğrudan FindName / alan adını kullanarak çalışma zamanı nesne grafiğine başvurmayı mümkün hale getirir.

Microsoft Visual Basic hedeflerini kullanan ve Page derleme eylemine sahip XAML dosyaları içeren bir WPF uygulaması için, olay işleyicisi temsilcileri için WithEvents söz dizimini desteklemek üzere derleme sırasında x:Name anahtar sözcüğünü Handlesolan tüm öğelere ekleyen ayrı bir başvuru özelliği oluşturulur. Bu özellik her zaman geneldir. Daha fazla bilgi için bkz. Visual Basic ve WPF Olay İşleme.

x:Name WPF XAML işlemcisi tarafından, sayfanın derleme eylemleri (örneğin, bir kaynak sözlüğündeki gevşek XAML) tarafından işaretleme derlenmediği durumlarda bile yükleme zamanında bir XAML ad kapsamına ad kaydetmek için kullanılır. Bu davranışın bir nedeni, x:NameElementName bağlama için gerekli olmasıdır. Ayrıntılar için bkz. Veri Bağlamaya Genel Bakış.

Daha önce belirtildiği gibi, x:Name (veya Name) x:Keykullanan durumlarda uygulanmamalıdır. WPF ResourceDictionary, kendisini XAML ad kapsamı olarak tanımlamaya yönelik özel bir davranışa sahiptir, ancak bu davranışı zorlamanın bir yolu olarak INameScope API'leri için Uygulanmadı veya null değerler döndürür. WPF XAML ayrıştırıcısı XAML tanımlı bir Namex:Name veya ResourceDictionary ile karşılaşırsa, ad herhangi bir XAML ad kapsamına eklenmez. Herhangi bir XAML ad kapsamı ve FindName yöntemlerinden bu adı bulmaya çalışmak geçerli sonuçlar döndürmez.

x:Ad ve Ad

x:Name ve Name gibi bazı önemli temel sınıflar için varsayılan XAML ad alanında belirtilen FrameworkElement bağımlılık özelliği aynı amaca uygun olduğundan, birçok WPF uygulama senaryosu FrameworkContentElement özniteliğinin kullanılmasını önleyebilir. Çerçeve düzeyinde Name özelliği olmayan bir öğeye kod erişiminin önemli olduğu bazı yaygın XAML ve WPF senaryoları hala vardır. Örneğin, bazı animasyon ve görsel taslak destek sınıfları Name özelliğini desteklemez, ancak animasyonu denetlemek için genellikle kodda bunlara başvuru yapılması gerekir. Daha sonra koddan başvurmak istiyorsanız, XAML'de oluşturulan zaman çizelgelerinde ve dönüşümlerde öznitelik olarak x:Name belirtmeniz gerekir.

Name sınıfında bir özellik olarak kullanılabiliyorsa, Name ve x:Name öznitelik olarak birbirinin yerine kullanılabilir, ancak her ikisi de aynı öğede belirtilirse ayrıştırma özel durumu ortaya çıkacaktır. XAML işaretleme derlenmişse, kar payı derlemesinde özel durum oluşur, aksi takdirde yükte gerçekleşir.

Name XAML özniteliği söz dizimi kullanılarak ve kodda SetValuekullanılarak ayarlanabilir; Ancak kodda Name özelliğinin ayarlanmasının, XAML'nin zaten yüklü olduğu çoğu durumda XAML ad kapsamı içinde temsili alan başvurusu oluşturmadığını unutmayın. Kodda Name ayarlamaya çalışmak yerine, uygun ad kapsamına karşı koddan NameScope yöntemleri kullanın.

Name, iç metinle özellik öğesi söz dizimi kullanılarak da ayarlanabilir, ancak bu sık rastlanmayan bir durumdur. Buna karşılık, x:Name XAML özellik öğesi söz diziminde veya SetValuekullanılarak kodda ayarlanamaz; yalnızca bir yönerge olduğundan nesnelerde öznitelik söz dizimi kullanılarak ayarlanabilir.

Silverlight Kullanım Notları

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

Ayrıca bkz.