Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ekli özellik bir XAML kavramıdır. Eklenen özellikler, nesne üzerinde ek özellik/değer çiftlerinin ayarlanmasını sağlar, ancak özellikler özgün nesne tanımının bir parçası değildir. Ekli özellikler genellikle sahip türünün nesne modelinde geleneksel özellik sarmalayıcıya sahip olmayan özel bir bağımlılık özelliği biçimi olarak tanımlanır.
Önkoşullar
Bağımlılık özellikleriyle ilgili temel kavramı anladığınızı ve Bağımlılık özelliklerine genel bakış makalesini okuduğunuz varsayılır.
XAML'de ekli özellikler
XAML'de AttachedPropertyProvider.PropertyName söz dizimini kullanarak ekli özellikleri ayarlarsınız. Burada, XAML'de Canvas.Left'i nasıl ayarlayabileceğinize yönelik bir örnek verilmiştir.
<Canvas>
<Button Canvas.Left="50">Hello</Button>
</Canvas>
Uyarı
Yalnızca Canvas.Left'i neden kullandığınızı tam olarak açıklamadan ekli örnek bir özellik olarak kullanıyoruz. Canvas.Left'in ne için olduğu ve Canvas'ın düzen alt öğelerini nasıl işlediği hakkında daha fazla bilgi edinmek istiyorsanız, Tuval başvuru konusuna veya XAML ile düzenleri tanımlama konusuna bakın.
Ekli özellikler neden kullanılır?
Ekli özellikler, bir ilişkideki farklı nesnelerin çalışma zamanında birbiriyle bilgi iletmesini engelleyebilecek kodlama kurallarından kurtulmanın bir yoludur. Her nesnenin yalnızca bu özelliği alıp ayarlayabilmesi için özellikleri ortak bir temel sınıfa koymak kesinlikle mümkündür. Ancak sonunda bunu yapmak isteyebileceğiniz çok sayıda senaryo, temel sınıflarınızı paylaşılabilir özelliklerle şişirecektir. Yüzlerce torun arasında sadece iki tanesinin bir özelliği kullanmaya çalışabileceği durumlar da meydana gelebilir. Bu iyi bir sınıf tasarımı değil. Ekli özellik kavramı bunu ele almak için nesnenin kendi sınıf yapısının tanımlamadığı bir özelliğe değer atamasına olanak tanır. Tanımlayıcı sınıf, nesne ağacında çeşitli nesneler oluşturulduktan sonra çalışma zamanında alt nesnelerden değeri okuyabilir.
Örneğin, alt öğeler, üst öğelerini kullanıcı arabiriminde nasıl sunulacakları konusunda bilgilendirmek için ekli özellikleri kullanabilir. Canvas.Left ekli özelliğinde bu durum söz konusudur. Canvas.Left, Tuval öğesinin kendisinde değil, içerisinde bulunan elemanlarda ayarlandığı için eklenti özelliği olarak oluşturulmuştur. Olası her alt öğe, düzen uzaklığını Canvas düzen kapsayıcı üst öğesinde belirtmek için Canvas.Left ve Canvas.Top kullanır. Ekli özellikler, her biri birçok olası düzen kapsayıcısının yalnızca birine uygulanan birçok özellik ile temel öğenin nesne modelini karmaşık hale getirmeden bunun çalışmasını mümkün hale getirir. Bunun yerine, düzen kapsayıcılarının çoğu kendi ekli özellik kümesini uygular.
Ekli özelliği uygulamak için Canvas sınıfıCanvas.LeftProperty adlı statik bir DependencyProperty alanı tanımlar. Daha sonra Canvas , hem XAML ayarını hem de çalışma zamanı değeri erişimini etkinleştirmek üzere ekli özelliğin ortak erişimcileri olarak SetLeft ve GetLeft yöntemlerini sağlar. XAML ve bağımlılık özellik sistemi için bu API kümesi, ekli özellikler için belirli bir XAML söz dizimini etkinleştiren bir deseni karşılar ve değeri bağımlılık özellik deposunda depolar.
Sahip olan tür ekli özellikleri nasıl kullanır?
Ekli özellikler herhangi bir XAML öğesinde (veya herhangi bir temel DependencyObject) ayarlanabilir, ancak bu otomatik olarak özelliğin ayarlanmasının somut bir sonuç ürettiği veya değere erişilebileceği anlamına gelmez. Ekli özelliği tanımlayan tür genellikle şu senaryolardan birini izler:
- Bağlı özelliği tanımlayan tür, diğer nesne ilişkilerinde bir üst öğe görevi görür. Alt nesneler, ekli özelliğin değerlerini ayarlar. Ekli özellik sahibi türü, alt öğeleri arasında dolaşarak değerleri alıp nesnenin yaşam döngüsünün bir noktasında bu değerler üzerinde harekete geçen bazı doğuştan gelen davranışlara sahiptir (düzen eylemi, BoyutDeğiştirilmiş gibi).
- Ekli özelliği tanımlayan tür, çeşitli olası üst öğeler ve içerik modelleri için alt öğe olarak kullanılır, ancak bilgilerin düzen bilgileri olması gerekmez.
- Ekli özellik, bilgileri başka bir kullanıcı arabirimi öğesine değil bir hizmete bildirir.
Bu senaryolar ve sahip olan türler hakkında daha fazla bilgi için Özel ekli özellikler'in "Canvas.Left hakkında daha fazla bilgi" bölümüne bakın.
Koda eklenen özellikler
Ekli özelliklerin, diğer bağımlılık özelliklerinde olduğu gibi kolay erişim ve ayar erişimi için tipik özellik sarmalayıcıları yoktur. Bunun nedeni, özelliğin ayarlandığı örnekler için ekli özelliğin kod merkezli nesne modelinin bir parçası olmamasıdır. (Diğer türlerin kendi kendilerine ayarlayabileceğiniz ekli bir özellik olan ve aynı zamanda sahip olan türde geleneksel özellik kullanımına sahip olan bir özelliği tanımlamak, yaygın olmasa da izin verilebilir.)
Kodda ekli özellik ayarlamanın iki yolu vardır: özellik sistemi API'lerini veya XAML desen erişimcilerini kullanın. Bu teknikler, sonuçları açısından neredeyse eşdeğerdir, bu nedenle hangisinin kullanılacağı çoğunlukla kodlama stiliyle ilgili bir konudur.
Özellik sistemini kullanma
Windows Çalışma Zamanı için ekli özellikler bağımlılık özellikleri olarak uygulanır, böylece değerler özellik sistemi tarafından paylaşılan bağımlılık-özellik deposunda depolanabilir. Bu nedenle iliştirilmiş özellikler, sahip olan sınıfta bağımlılık özelliği tanımlayıcısını açığa çıkarır.
Kodda ekli bir özellik ayarlamak için SetValue yöntemini çağırır ve bu ekli özelliğin tanımlayıcısı olarak hizmet veren DependencyProperty alanını geçirirsiniz. (Ayrıca ayarlamak için bir değer geçirirsiniz.)
Kodda ekli bir özelliğin değerini almak için GetValue yöntemini çağırırsınız ve yine tanımlayıcı işlevi görecek DependencyProperty alanını geçirirsiniz.
XAML erişim örüntüsünü kullanma
Bir XAML işlemcisi, XAML bir nesne ağacına ayrıştırıldığında ekli özellik değerlerini ayarlayabilmelidir. Ekli özelliğin sahip olduğu tür, GetPropertyName ve SetPropertyName şeklinde adlandırılmış özel erişimci yöntemlerini uygulamalıdır. Bu ayrılmış erişimci yöntemleri, kodda ekli özelliği almak veya ayarlamak için de bir yoldur. Kod açısından bakıldığında, ekli bir özellik, özellik erişimcileri yerine yöntem erişimcileri olan bir yedekleme alanına benzer ve bu yedekleme alanı özel olarak tanımlanmadan herhangi bir nesnede bulunabilir.
Sonraki örnek, XAML erişimci API'sini kullanarak kodda ekli özelliği nasıl ayarlayabileceğinizi gösterir. Bu örnekte, myCheckBoxCheckBox sınıfının bir örneğidir. Son satır, değeri ayarlayan koddur; bundan önceki satırlar yalnızca örnekleri ve bunların üst-alt ilişkisini oluşturur. Özellik sistemini kullanıyorsanız, açıklamasız son satır söz dizimidir. XAML erişimcisi desenini kullanıyorsanız, açıklama satırı son satır söz dizimidir.
Canvas myC = new Canvas();
CheckBox myCheckBox = new CheckBox();
myCheckBox.Content = "Hello";
myC.Children.Add(myCheckBox);
myCheckBox.SetValue(Canvas.TopProperty,75);
//Canvas.SetTop(myCheckBox, 75);
Dim myC As Canvas = New Canvas()
Dim myCheckBox As CheckBox= New CheckBox()
myCheckBox.Content = "Hello"
myC.Children.Add(myCheckBox)
myCheckBox.SetValue(Canvas.TopProperty,75)
' Canvas.SetTop(myCheckBox, 75)
Canvas myC;
CheckBox myCheckBox;
myCheckBox.Content(winrt::box_value(L"Hello"));
myC.Children().Append(myCheckBox);
myCheckBox.SetValue(Canvas::TopProperty(), winrt::box_value(75));
// Canvas::SetTop(myCheckBox, 75);
Canvas^ myC = ref new Canvas();
CheckBox^ myCheckBox = ref new CheckBox();
myCheckBox->Content="Hello";
myC->Children->Append(myCheckBox);
myCheckBox->SetValue(Canvas::TopProperty,75);
// Canvas::SetTop(myCheckBox, 75);
Özel ekli özellikler
Özel ekli özelliklerin nasıl tanımlanacağına ilişkin kod örnekleri ve ekli özellik kullanma senaryoları hakkında daha fazla bilgi için bkz. Özel ekli özellikler.
Ekli özellik başvuruları için özel söz dizimi
Ekli özellik adındaki nokta, tanımlama deseni için önemli bir parçadır. Bazen bir söz dizimi veya durum noktayı başka bir anlama sahip olarak değerlendirdiğinde belirsizlikler olabilir. Örneğin, bir nokta, bağlama yolu için nesne modeli geçişi olarak değerlendirilir. Bu belirsizlikle ilgili çoğu durumda, ekli özellik için iç noktanın hala sahip olarak ayrıştırılabilmesini sağlayan özel bir söz dizimi vardır.ekli bir özelliğin özellik ayırıcısı.
- Bir animasyonun hedef yolunun parçası olarak ekli bir özellik belirtmek için, ekli özellik adını parantez
()içine alın ; örneğin,(Canvas.Left). Daha fazla bilgi için bkz . Özellik yolu söz dizimi.
Uyarı
Windows Çalışma Zamanı XAML uygulamasının mevcut sınırlamalarından biri, özel bir ekli özelliğe animasyon ekleyememenizdir.
- Bir kaynak dosyasından x:Uid için bir kaynak başvurusunun hedefi olarak bir ekli özellik belirtmek amacıyla kod tarzı, tam nitelikli bir using: bildirimi köşeli ayraçlar ("[]") içinde ekleyen özel bir söz dizimi kullanarak kasıtlı bir kapsam sonu oluşturun. Örneğin, bir öğesi
<TextBlock x:Uid="Title" />olduğunu varsayarsak, kaynak dosyasında bu örnekteki Canvas.Top değerini hedefleyen kaynak anahtarı olurTitle.\[using:Microsoft.UI.Xaml.Controls\]Canvas.Top. Kaynak dosyaları ve XAML hakkında daha fazla bilgi için bkz. Kullanıcı arabiriminizdeki dizeleri yerelleştirme.
İlgili konular
Windows developer