Temel Öğelere Genel Bakış
Windows Presentation Foundation'daki (WPF) sınıfların yüksek bir yüzdesi, SDK belgelerinde temel öğe sınıfları olarak yaygın olarak başvurulan dört sınıftan türetilir. Bu sınıflar UIElement, FrameworkElement, ContentElementve FrameworkContentElement. DependencyObject sınıfı da ilişkilidir çünkü hem UIElement hem de ContentElement ortak bir temel sınıfıdır
WPF Sınıflarındaki Temel Öğe API'leri
Hem UIElement hem de ContentElement, biraz farklı yollarla DependencyObject'den türetilir. Bu düzeydeki bölme, bir UIElement veya ContentElement kullanıcı arabiriminde nasıl kullanıldığı ve uygulamada hangi amaca hizmet ettikleriyle ilgilidir. UIElement ayrıca, Windows Presentation Foundation'ın (WPF) temel aldığı alt düzey grafik desteğini sağlayan bir sınıf olan Visual'e sahip sınıf hiyerarşisine sahiptir. Visual bağımsız dikdörtgen ekran bölgeleri tanımlayarak bir işleme çerçevesi sağlar. Uygulamada, UIElement daha büyük bir nesne modelini destekleyecek öğelere yöneliktir, dikdörtgen ekran bölgeleri olarak tanımlanabilen ve içerik modelinin özellikle daha açık olduğu bölgeler halinde işlenip düzenlenmek ve farklı öğe birleşimlerine izin vermek için tasarlanmıştır. ContentElement, Visual'den türetilmez; model, bir okuyucu veya görüntüleyici gibi başka bir şeyin ContentElement'yi tüketmesi, öğeleri yorumlayarak Windows Presentation Foundation (WPF) tarafından tüketilecek tam Visual'ü üretmesidir. Bazı UIElement sınıflarının içerik konakları olması amaçlanmıştır: bir veya daha fazla ContentElement sınıfı için barındırma ve işleme sağlar (DocumentViewer bu tür bir sınıfa örnektir). ContentElement, bir UIElementiçinde barındırılabilir metin, bilgi veya belge içeriğini ele alan ve biraz daha küçük nesne modellerine sahip öğeler için temel sınıf olarak kullanılır.
Framework-Level ve Core-Level
UIElement, FrameworkElementiçin temel sınıf olarak görev yapar ve ContentElementFrameworkContentElementiçin temel sınıf olarak görev yapar. Bu sonraki sınıf düzeyinin nedeni, WPF çerçeve düzeyinden ayrı bir WPF çekirdek düzeyini desteklemektir ve bu bölüm, API'lerin PresentationCore ile PresentationFramework derlemeleri arasında nasıl bölündüğü konusunda da mevcut olur. WPF çerçeve düzeyi, sunu için düzen yöneticisinin uygulanması da dahil olmak üzere temel uygulama gereksinimleri için daha eksiksiz bir çözüm sunar. WPF çekirdek düzeyi, ek derlemenin yükünü almadan WPF'nin büyük bir kısmını kullanmanın bir yolunu sağlar. Bu düzeyler arasındaki ayrım çoğu tipik uygulama geliştirme senaryoları için çok nadiren önemlidir ve genel olarak WPF API'lerini bir bütün olarak düşünmeli ve WPF çerçeve düzeyi ile WPF çekirdek düzeyi arasındaki farkla ilgilenmemelisiniz. Uygulama tasarımınız büyük miktarlarda WPF çerçeve düzeyi işlevselliğini değiştirmeyi seçerse , örneğin genel çözümünüz zaten kendi kullanıcı arabirimi (UI) oluşturma ve düzeni uygulamalarına sahipse düzey farkları hakkında bilgi sahibi olmanız gerekebilir.
Elementten Türetilen Öğeyi Seçme
WPF'yi genişleten bir özel sınıf oluşturmanın en pratik yolu, mevcut sınıf hiyerarşisi aracılığıyla istediğiniz işlevselliği mümkün olduğunca elde ettiğiniz WPF sınıflarından birinden türetmektir. Bu bölümde, hangi sınıftan devralınacaklarına karar vermenize yardımcı olmak için en önemli üç öğe sınıfıyla birlikte gelen işlevler listelenir.
Eğer bir denetim uyguluyorsanız, ki bu WPF sınıfından türetmenin en yaygın nedenlerinden biridir, büyük olasılıkla kullanışlı bir denetim, bir denetim ailesi temel sınıfı veya en azından Control temel sınıfından türetmek istersiniz. Bazı yönergeler ve pratik örnekler için bkz. Denetim Yazmaya Genel Bakış.
Bir denetim oluşturmuyorsanız ve hiyerarşide daha yüksek olan bir sınıftan türetmeye ihtiyacınız varsa, aşağıdaki bölümler her temel öğe sınıfında hangi özelliklerin tanımlandığına yönelik bir kılavuz olarak tasarlanmıştır.
DependencyObject'den türetilen bir sınıf oluşturursanız aşağıdaki işlevselliği devralırsınız:
GetValue ve SetValue desteği ve genel özellik sistemi desteği.
Bağımlılık özellikleri olarak uygulanan bağımlılık özelliklerini ve ekli özellikleri kullanabilme.
UIElementtüretilen bir sınıf oluşturursanız, DependencyObjecttarafından sağlanana ek olarak aşağıdaki işlevleri devralırsınız:
Animasyonlu özellik değerleri için temel destek. Daha fazla bilgi için bkz. Animasyona Genel Bakış.
Temel giriş olayı desteği ve komut desteği. Daha fazla bilgi için bkz. Girişe Genel Bakış ve Komuta Genel Bakış.
Düzen sistemine bilgi sağlamak için geçersiz kılınabilecek sanal yöntemler.
FrameworkElementtüretilen bir sınıf oluşturursanız, UIElementtarafından sağlanana ek olarak aşağıdaki işlevleri devralırsınız:
Stil ve görsel taslak desteği. Daha fazla bilgi için bkz. Style ve Görsel Taslaklarına Genel Bakış.
Veri bağlama desteği. Daha fazla bilgi için bkz. Veri Bağlamaya Genel Bakış.
Dinamik kaynak başvuruları için destek. Daha fazla bilgi için bkz. XAML Kaynakları.
Özellik değeri devralma desteği ve meta verilerdeki veri bağlama, stiller veya düzenin çerçeve uygulaması gibi çerçeve hizmetlerine özelliklerle ilgili koşulları bildirmeye yardımcı olan diğer bayraklar. Daha fazla bilgi için bkz. Framework Özellik Meta Verileri.
Mantıksal ağaç kavramı. Daha fazla bilgi için bkz. WPF
Ağaçları. Düzeni etkileyen özelliklerde yapılan değişiklikleri algılayan bir OnPropertyChanged geçersiz kılma da dahil olmak üzere düzen sisteminin pratik WPF çerçeve düzeyi uygulaması için destek.
ContentElementtüretilen bir sınıf oluşturursanız, DependencyObjecttarafından sağlanana ek olarak aşağıdaki işlevleri devralırsınız:
Animasyon desteği. Daha fazla bilgi için bkz. Animasyona Genel Bakış.
Temel giriş olayı desteği ve komut desteği. Daha fazla bilgi için bkz. Girişe Genel Bakış ve Komuta Genel Bakış.
FrameworkContentElement'den türetilen bir sınıf oluşturursanız, ContentElementtarafından sağlanana ek olarak aşağıdaki işlevleri elde edersiniz:
Stil ve görsel taslak desteği. Daha fazla bilgi için bkz. Style ve Animasyona Genel Bakış.
Veri bağlama desteği. Daha fazla bilgi için bkz. Veri Bağlamaya Genel Bakış.
Dinamik kaynak başvuruları için destek. Daha fazla bilgi için bkz. XAML Kaynakları.
Özellik değeri devralma desteği ve meta verilerdeki veri bağlama, stiller veya düzenin çerçeve uygulaması gibi çerçeve hizmetlerine özelliklerle ilgili koşulları bildirmeye yardımcı olan diğer bayraklar. Daha fazla bilgi için bkz. Framework Özellik Meta Verileri.
Düzen sistemi değişikliklerine (ArrangeOverridegibi) erişimi devralmazsınız. Düzen sistemi uygulamaları yalnızca FrameworkElementüzerinde kullanılabilir. Ancak, düzeni etkileyen özelliklerdeki değişiklikleri algılayan ve bunları tüm içerik barındırıcılarına raporlayan bir OnPropertyChanged geçersiz kılmayı devralırsınız.
İçerik modelleri çeşitli sınıflar için belgelenmiştir. Bir sınıfın içerik modeli, türetilmesi gereken uygun bir sınıf bulmak istiyorsanız dikkate almanız gereken olası bir faktördür. Daha fazla bilgi için bkz. WPF İçerik Modeli
Diğer Temel Sınıflar
DispatcherObject (Yönlendirici Nesne)
DispatcherObject WPF iş parçacığı modeli için destek sağlar ve WPF uygulamaları için oluşturulan tüm nesnelerin bir Dispatcherile ilişkilendirilmesine olanak tanır. UIElement, DependencyObjectveya Visual'den türetmeseniz bile, bu iş parçacığı modeli desteğini almak için DispatcherObject'ten türetmeyi düşünmelisiniz. Daha fazla bilgi için bkz. İş Parçacığı İşlem Modeli.
Görsel
Visual genellikle kabaca dikdörtgen bir bölgede görsel sunum gerektiren bir 2B nesne kavramını uygular. Bir Visual'ın gerçek işlenmesi diğer sınıflarda gerçekleşir (bağımsız değildir), ancak Visual sınıfı, çeşitli düzeylerdeki rendering süreçleri tarafından kullanılan bilinen bir tip sağlar. Visual isabet testi uygular, ancak isabet testi pozitiflerini bildiren olayları açığa çıkarmaz (bunlar UIElement'de bulunur). Daha fazla bilgi için bkz. Visual Layer Programming.
Dondurulabilir
Freezable, sabit bir nesne gerektiğinde veya performans nedeniyle istendiğinde nesnenin kopyalarını oluşturma araçları sağlayarak, değiştirilebilir bir nesnedeki değişmezliğin benzetimini sağlar. Freezable türü, geometriler ve fırçalar gibi belirli grafik öğelerinin yanı sıra animasyonlar için ortak bir temel sağlar. Özellikle, Freezable bir Visualdeğildir; başka bir nesnenin özellik değerini doldurmak için Freezable uygulandığında alt özellik haline gelen özellikleri tutabilir ve bu alt özellikler işlemeyi etkileyebilir. Daha fazla bilgi için bkz. Dondurulabilir Nesneler Genel Bakış.
Animatable, animasyon denetim katmanını ve bazı yardımcı program üyelerini özel olarak ekleyip animasyonlu özelliklerin animasyonsuz özelliklerden ayırt edilebilmesini sağlayan Freezable türetilmiş bir sınıftır.
Kontrol
Control, teknolojiye bağlı olarak çeşitli terimlere sahip bir denetim veya bileşen olan nesne türü için hedeflenen temel sınıftır. Genel olarak WPF denetim sınıfları, doğrudan ui denetimini temsil eden veya denetim bileşimine yakından katılan sınıflardır. Control'ın etkinleştirdiği birincil işlevsellik, kontrol şablonlamasıdır.
Ayrıca bkz.
.NET Desktop feedback