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 | Tanım |
---|---|
XAMLNameValue |
XamlName Dilbilgisi kısıtlamalarına uyan bir dize. |
Açıklamalar
Bir çerçevenin yedekleme programlama modeline uygulandıktan sonra x:Name
ad, bir nesne başvurusu veya oluşturucu tarafından döndürülen bir örneği tutan değişkene eşdeğerdir.
Yönerge kullanımının değeri x:Name
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:Name
aynı zamanda kullanan x:Key
durumlarda uygulanmamalıdır. Belirli mevcut çerçevelere göre XAML uygulamaları ile x:Name
arasında x:Key
değiştirme kavramları getirmektedir, ancak bu önerilen bir uygulama değildir. .NET XAML Hizmetleri, veya DictionaryKeyPropertyAttributegibi INameScope ad/anahtar bilgilerini işlerken bu tür değiştirme kavramlarını desteklemez.
İzin verme x:Name
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 bilgilerin tanımıyla INameScope tutarlı olmalı ve bilgilerin nereye uygulandığıyla 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, şablonlar ve diğer ertelenmiş içerik tarafından oluşturulan mantıksal ağaç gibi ayrı NameScope aralıklara 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üre eşlenen x:Name
bir özellik oluşturulabilir veya değiştirilebilir. Tür tanımı kodunda ile RuntimeNamePropertyAttribute eşlenmesi 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ığı, arabirimi uygulanarak INameScope ç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, x:Name
XAML bir işaretleme derleme derleme görevi tarafından işlendiğinde ve bu alan nesneye başvuru içerdiğinde temel kodda oluşturulan alanın adı olur. 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, adlı InitializeComponent
oluşturulan bir yöntem sınıf oluşturucusunun içinden çağrılır. InitializeComponent
giriş dizeleri FindName
olarak kısmi sınıfın x:Name
XAML tanımlı bölümünde bulunan değerlerin her birini kullanan ç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. yürütmesiInitializeComponent
, XAML tanımlı bir nesneye başvuruya ihtiyaç duyduğunuzda açıkça çağırmak FindName
zorunda kalmak yerine/ alan adını kullanarak x:Name
çalışma zamanı nesne grafiğine doğrudan başvurmayı mümkün hale getirir.
Microsoft Visual Basic hedeflerini kullanan ve derleme eylemine sahip Page
XAML dosyaları içeren bir WPF uygulaması için, olay işleyicisi temsilcileri için söz dizimini WithEvents
desteklemek Handles
üzere, derleme sırasında anahtar sözcüğü içeren tüm öğelere ekleyen ayrı bir x:Name
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 eylemleriyle (örneğin, kaynak sözlüğünde gevşek XAML) işaretleme derlenmediği durumlarda bile yükleme zamanında bir adı XAML ad kapsamına kaydetmek için kullanılır. Bu davranışın x:Name
bir nedeni bağlama için ElementName gerekli olma olasılığıdır. Ayrıntılar için bkz . Veri Bağlamaya Genel Bakış.
Daha önce belirtildiği gibi, x:Name
(veya Name
) aynı zamanda kullanan x:Key
durumlarda uygulanmamalıdır. WPF ResourceDictionary , kendisini XAML ad kapsamı olarak tanımlamaya yönelik özel bir davranışa sahiptir, ancak bu davranışı zorlamak için API'ler için INameScope Uygulanmadı veya null değerler döndürür. WPF XAML ayrıştırıcısı veya XAML tanımlı ResourceDictionarybir içinde karşılaşırsa Name
x:Name
, ad hiçbir XAML ad kapsamına eklenmez. Herhangi bir XAML namescope'tan bu adı bulmaya çalışmak ve FindName
yöntemler geçerli sonuçlar döndürmez.
x:Ad ve Ad
ve gibi FrameworkContentElementFrameworkElement önemli temel sınıfların birkaçı x:Name
için varsayılan XAML ad alanında belirtilen bağımlılık özelliği aynı amaca uygun olduğundanName
, birçok WPF uygulama senaryosu özniteliğin kullanılmasını önleyebilir. Çerçeve düzeyinde özelliği olmayan Name
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ı bir Name
özelliği desteklemez, ancak animasyonu denetlemek için genellikle kodda başvurulmaları gerekir. Daha sonra koddan başvurmak istiyorsanız, XAML'de oluşturulan zaman çizelgelerinde ve dönüşümlerde öznitelik olarak belirtmelisiniz x:Name
.
sınıfında Name bir özellik olarak kullanılabiliyorsa ve x:Name
öznitelik olarak birbirinin yerine kullanılabilirseName, 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 öznitelik söz dizimi kullanılarak ve kullanılarak SetValuekodda ayarlanabilir; ancak kodda özelliğini ayarlamanın Name , 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 ayarlamaya Name çalışmak yerine, uygun ad kapsamına göre koddan yöntemleri kullanın NameScope .
Name iç metin ile ö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 kullanılarak SetValuekodda ayarlanamaz; yalnızca nesnelerde öznitelik söz dizimi kullanılarak ayarlanabilir çünkü bu bir yönergedir.
Silverlight Kullanım Notları
x:Name
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