WPF İçerik Modeli
Windows Presentation Foundation (WPF), birincil amacı farklı türde içerik görüntülemek olan çok sayıda denetim ve denetim benzeri tür sağlayan bir sunum platformudur. Hangi denetimin kullanılacağını veya hangi denetimin türetileceğini öğrenmek için, belirli bir denetimin en iyi şekilde görüntüleyeceği nesne türlerini anlamanız gerekir.
Bu konu, WPF denetimi ve denetim benzeri türler için içerik modelini özetler. İçerik modeli, bir denetimde hangi içeriğin kullanılabileceğini açıklar. Bu konu, her bir içerik modeli için içerik özelliklerini de listeler. İçerik özelliği, nesnenin içeriğini depolamak için kullanılan bir özelliktir.
Rastgele Içerik içeren sınıflar
Bazı denetimler dize, DateTime nesne veya ek öğeler için bir kapsayıcı gibi herhangi bir türde bir nesne içerebilir UIElement . Örneğin, bir Button görüntü ve bir metin içerebilir; ya da CheckBox değerini içerebilir DateTime.Now .
WPF, rastgele içerik içerebilen dört sınıfa sahiptir. Aşağıdaki tabloda, öğesinden devraldığı sınıflar listelenmektedir Control .
| Rastgele içerik içeren sınıf | Content |
|---|---|
| ContentControl | Tek bir rastgele nesne. |
| HeaderedContentControl | Her ikisi de rastgele nesneler olan üst bilgi ve tek öğe. |
| ItemsControl | Rastgele nesnelerden oluşan bir koleksiyon. |
| HeaderedItemsControl | Hepsi rastgele nesneler olan bir üst bilgi ve öğe koleksiyonu. |
Bu sınıflardan devralma denetimleri aynı içerik türünü içerebilir ve içeriği aynı şekilde ele alabilir. Aşağıdaki çizimde, bir görüntü ve bazı metinler içeren her bir içerik modelinden bir denetim gösterilmektedir:

Tek bir rastgele nesne içeren denetimler
ContentControlSınıfı, tek bir rastgele içerik parçası içerir. İçerik özelliği Content . Aşağıdaki denetimler öğesinden devralınır ContentControl ve içerik modelini kullanır:
Aşağıdaki çizimde, Content ve içeren bir dizeye, nesnesine, a öğesine ve öğesine ayarlanan dört düğme gösterilmektedir DateTimeRectanglePanelEllipseTextBlock :

Özelliği ayarlama hakkında bir örnek için Content bkz ContentControl ..
Üst bilgi ve tek bir rastgele nesne içeren denetimler
HeaderedContentControlSınıf öğesinden devralır ContentControl ve üst bilgiyle içerik görüntüler. , Öğesinden, ' den içerik özelliğini devralır, ContentContentControl ve Header türündeki özelliği tanımlar Object ; Bu nedenle, her ikisi de rastgele bir nesne olabilir.
Aşağıdaki denetimler öğesinden devralınır HeaderedContentControl ve içerik modelini kullanır:
Aşağıdaki çizimde iki nesne gösterilmektedir TabItem . Birincisi, TabItemUIElement ve gibi nesneleri vardır HeaderContent . , Header Ve içeren bir öğesine ayarlanır StackPanelEllipseTextBlock . , Content Ve içeren bir öğesine ayarlanır StackPanelTextBlockLabel . İkinci öğesinde TabItemHeader içinde ve içindeki bir dize vardır TextBlockContent .

Nesnelerin nasıl oluşturulacağı hakkında bir örnek için TabItem bkz HeaderedContentControl ..
Rastgele nesneler koleksiyonu Içeren denetimler
ItemsControlSınıfı öğesinden devralır Control ve dizeler, nesneler veya diğer öğeler gibi birden çok öğe içerebilir. İçerik özellikleri ItemsSource ve ' dir Items . ItemsSource genellikle ItemsControl bir veri koleksiyonu ile doldurmak için kullanılır. Öğesini doldurmak için bir koleksiyon kullanmak istemiyorsanız ItemsControl , özelliğini kullanarak öğeleri ekleyebilirsiniz Items .
Aşağıdaki denetimler öğesinden devralınır ItemsControl ve içerik modelini kullanır:
Aşağıdaki çizimde, ListBox Bu tür öğeleri içeren bir gösterilmektedir:

Bir üst bilgi ve rastgele nesneler koleksiyonu içeren denetimler
HeaderedItemsControlSınıfı öğesinden devralır ItemsControl ve dizeler, nesneler veya diğer öğeler ve bir üst bilgi gibi birden çok öğe içerebilir. , ItemsControl Ve içerik özelliklerini devralır ItemsSourceItems ve Header rastgele bir nesne olabilecek özelliği tanımlar.
Aşağıdaki denetimler öğesinden devralınır HeaderedItemsControl ve içerik modelini kullanır:
UIElement nesnelerinin bir koleksiyonunu Içeren Sınıflar
PanelSınıfı, alt nesneleri konumlandırır ve düzenler UIElement . İçerik özelliği Children .
Aşağıdaki sınıflar Panel sınıfından devralınır ve onun içerik modelini kullanır:
Daha fazla bilgi için bkz. panellere genel bakış.
UIElement görünümünü etkileyen sınıflar
DecoratorSınıfı, tek bir alt öğenin üzerine veya çevresine görsel etkiler uygular UIElement . İçerik özelliği Child . Aşağıdaki sınıflar öğesinden devralınır Decorator ve içerik modelini kullanır:
Aşağıdaki çizim, TextBox etrafında bir olan (ile donatılmış) bir gösterir Border .

Kenarlığı olan TextBlock
UIElement hakkında görsel geri bildirim sağlayan sınıflar
AdornerSınıfı, bir kullanıcıya görsel yardımlar sağlar. Örneğin, Adorner öğelerine işlevsel işleyiciler eklemek veya bir denetimle ilgili durum bilgilerini sağlamak için bir kullanın. AdornerSınıfı, kendi donatıcıları oluşturabilmeniz için bir çerçeve sağlar. WPF, uygulanan hiçbir donatıcıları sağlamıyor. Daha fazla bilgi için bkz. donatıcıları genel bakış.
Kullanıcıların metin girmesini sağlayan sınıflar
WPF, kullanıcıların metin girmesini sağlayan üç birincil denetim sağlar. Her denetim, metni farklı görüntüler. Aşağıdaki tabloda, metin ile ilgili bu üç denetim, metin görüntüleme özellikleri ve denetimin metnini içeren özellikler listelenmiştir.
| Denetim | Metin şöyle görüntülenir | İçerik özelliği |
|---|---|---|
| TextBox | Düz metin | Text |
| RichTextBox | Biçimli metin | Document |
| PasswordBox | Gizli metin (karakterler maskelenir) | Password |
Metninizi görüntüleyen sınıflar
Düz veya biçimli metinleri göstermek için birkaç sınıf kullanılabilir. TextBlockKüçük miktarlarda metin göstermek için ' i kullanabilirsiniz. Büyük miktarlarda metin göstermek istiyorsanız,, FlowDocumentReaderFlowDocumentPageViewer veya FlowDocumentScrollViewer denetimlerini kullanın.
TextBlockİki içerik özelliği vardır: Text ve Inlines . Tutarlı biçimlendirme kullanan metni göstermek istediğinizde, Text özelliği genellikle en iyi seçimdir. Metnin tamamında farklı biçimlendirme kullanmayı planlıyorsanız, Inlines özelliğini kullanın. InlinesÖzelliği Inline , metnin nasıl biçimlendirileceğini belirten bir nesne koleksiyonudur.
Aşağıdaki tabloda,, ve sınıflarının içerik özelliği FlowDocumentReader listelenmektedir FlowDocumentPageViewerFlowDocumentScrollViewer .
| Denetim | İçerik özelliği | İçerik özelliği türü |
|---|---|---|
| FlowDocumentPageViewer | Belge | IDocumentPaginatorSource |
| FlowDocumentReader | Belge | FlowDocument |
| FlowDocumentScrollViewer | Belge | FlowDocument |
, FlowDocument Arabirimini uygular IDocumentPaginatorSource ; Bu nedenle, üç sınıfın hepsi FlowDocument içerik olarak alabilir.
Metninizi biçimlendirmek için sınıflar
TextElement ve ilgili sınıfları metni biçimlendirmeye izin verir. TextElement nesneler, ve nesnelerinde metin içerir ve biçimlendirir TextBlockFlowDocument . Nesnelerin iki birincil türü TextElementBlock öğe ve Inline öğelerdir. Bir Block öğe, paragraf veya liste gibi bir metin bloğunu temsil eder. InlineÖğesi bir blok içindeki metnin bir bölümünü temsil eder. Birçok Inline sınıf, uygulandıkları metin için biçimlendirme belirler. Her birinin TextElement kendi içerik modeli vardır. Daha fazla bilgi için bkz. TextElement Içerik modeline genel bakış.