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 , FrameworkElement, ContentElementve FrameworkContentElementsınıflarıdırUIElement. Hem DependencyObject hem de UIElement ortak bir temel sınıfı olduğundan sınıfı da ilişkilidir ContentElement

WPF Sınıflarındaki Temel Öğe API'leri

Hem hem de UIElementContentElement , yolundan DependencyObjectbiraz farklı yollardan türetilir. Bu düzeydeki bölme, bir UIElement veya'nın ContentElement bir 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 kullanıma sunan bir sınıf olan sınıf hiyerarşisinde de bulunur Visual . 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 con çadır modu l öğesinin ö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 öğesinden Visualtüretilmez; modeli, öğesinin ContentElement daha sonra öğeleri yorumlayan ve Windows Presentation Foundation'ın (WPF) kullanacağı tam Visual öğeyi üretecek bir okuyucu veya görüntüleyici gibi başka bir şey tarafından tüketilmesidir. Belirli UIElement sınıfları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 böyle bir sınıfa örnektir). ContentElement , biraz daha küçük nesne modellerine sahip ve içinde barındırılabilir UIElementmetin, bilgi veya belge içeriğine daha fazla değinen öğeler için temel sınıf olarak kullanılır.

Çerçeve Düzeyi ve Çekirdek Düzeyi

UIElement için FrameworkElementtemel sınıf olarak görev yapar ve ContentElement için FrameworkContentElementtemel 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.

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.

WPF sınıfından türetmenin en yaygın nedenlerinden biri olan bir denetim uyguluyorsanız, pratik bir denetim, denetim ailesi temel sınıfı veya en azından temel sınıftan Control türetmek isteyebilirsiniz. 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.

öğesinden DependencyObjecttüretilen bir sınıf oluşturursanız aşağıdaki işlevleri devralırsınız:

  • GetValue ve SetValue destek ve genel özellik sistemi desteği.

  • Bağımlılık özellikleri olarak uygulanan bağımlılık özelliklerini ve ekli özellikleri kullanabilme.

öğesinden UIElementtüretilen bir sınıf oluşturursanız, tarafından DependencyObjectsağlanana ek olarak aşağıdaki işlevleri devralırsınız:

öğesinden FrameworkElementtüretilen bir sınıf oluşturursanız, tarafından UIElementsağ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 Taslaklara 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'deki 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.

öğesinden ContentElementtüretilen bir sınıf oluşturursanız, tarafından DependencyObjectsağlanana ek olarak aşağıdaki işlevleri devralırsınız:

öğesinden FrameworkContentElementtüretilen bir sınıf oluşturursanız, tarafından ContentElementsağ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 (gibi ArrangeOverride) erişimi devralmazsınız. Düzen sistemi uygulamaları yalnızca üzerinde FrameworkElementkullanılabilir. Ancak, düzeni etkileyen özelliklerde yapılan değişiklikleri algılayan ve bunları tüm içerik konaklarına raporlayan bir OnPropertyChanged geçersiz kılma devralırsınız.

Con çadır modu ls, çeşitli sınıflar için belgelenmiştir. Bir sınıfın con çadır modu l değeri, türetilmesi gereken uygun bir sınıf bulmak istiyorsanız göz önünde bulundurmanız gereken olası bir faktördür. Daha fazla bilgi için bkz . WPF İçerik Modeli.

Diğer Temel Sınıflar

Dispatcherobject

DispatcherObject WPF iş parçacığı modeli için destek sağlar ve WPF uygulamaları için oluşturulan tüm nesnelerin ile Dispatcherilişkilendirilmesine olanak tanır. Bu iş parçacığı modeli desteğini almak için , DependencyObjectveya Visual'den UIElementtüretmeseniz bile, 'den DispatcherObject türetme yapmayı göz önünde bulundurmalısınız. Daha fazla bilgi için bkz . İş Parçacığı Modeli.

Görsel

Visual genellikle kabaca dikdörtgen bir bölgede görsel sunum gerektiren bir 2B nesne kavramını uygular. bir gerçek işleme Visual diğer sınıflarda gerçekleşir (kendi kendine değil), ancak Visual sınıfı çeşitli düzeylerde işleme işlemleri tarafından kullanılan bilinen bir tür sağlar. Visual isabet testi uygular, ancak isabet testi pozitiflerini raporlayan olayları kullanıma sunmaz (bunlar içindedir UIElement). Daha fazla bilgi için bkz . Görsel Katman Programlama.

Freezable

Freezable performans nedenleriyle sabit bir nesne gerektiğinde veya istendiğinde nesnenin kopyalarını oluşturmak için araçlar sağlayarak, değiştirilebilir bir nesnede değiştirilemezlik simülasyonu sağlar. Türü, Freezable geometriler ve fırçalar gibi belirli grafik öğelerinin yanı sıra animasyonlar için ortak bir temel sağlar. Özellikle, bir Freezable değildir Visual; başka bir nesnenin özellik değerini doldurmak için uygulandığında Freezable alt özellik haline gelen özellikleri tutabilir ve bu alt özellikler işlemeyi etkileyebilir. Daha fazla bilgi için bkz . Freezable Objects Overview.

Animatable

Animatable , animasyon denetim katmanını ve bazı yardımcı program üyelerini özellikle ekleyip animasyonlu özelliklerin animasyonsuz özelliklerden ayırt edilebilmesini sağlayan türetilmiş bir Freezable sınıftır.

Control

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. Etkinleştiren Control birincil işlevsellik, denetim şablon oluşturmadır.

Ayrıca bkz.