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:

Screenshot that shows four different controls, one from each content model.

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 :

Screenshot that shows four buttons with different content types.

Ö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 .

TabControl that uses different types in the Header property.

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:

Screenshot that shows a ListBox with four types of content.

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 .

TextBox with black 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ış.

Ayrıca bkz.