Megosztás a következőn keresztül:


WPF tartalommodell

A Windows Presentation Foundation (WPF) egy bemutatóplatform, amely számos vezérlőt és vezérlőszerű típust biztosít, amelyek elsődleges célja különböző típusú tartalmak megjelenítése. Annak meghatározásához, hogy melyik vezérlő használata vagy amelyik vezérlőből történő származtatás a legjobb, ismernie kell azokat az objektumtípusokat, amelyeket egy adott vezérlő a legjobban képes megjeleníteni.

Ez a témakör a WPF-vezérlők és vezérlőszerű típusok tartalommodelljének összegzését foglalja össze. A tartalommodell leírja, hogy milyen tartalmak használhatók a vezérlőkben. Ez a témakör az egyes tartalommodellek tartalomtulajdonságainak listáját is felsorolja. A tartalomtulajdonság az objektum tartalmának tárolására szolgáló tulajdonság.

Tetszőleges tartalmat tartalmazó osztályok

Egyes vezérlők bármilyen típusú objektumot tartalmazhatnak, például sztringet, DateTime objektumot vagy olyan UIElement, amely további elemek tárolója. Egy Button például tartalmazhat képet és szöveget; vagy egy CheckBox a DateTime.Nowértékét is tartalmazhatják.

A WPF négy osztályt tartalmaz, amelyek tetszőleges tartalmat tartalmazhatnak. Az alábbi táblázat a Controlöröklő osztályokat sorolja fel.

Tetszőleges tartalmat tartalmazó osztály Tartalom
ContentControl Egyetlen tetszőleges objektum.
HeaderedContentControl Egy fejléc és egy elem, amelyek mindegyike tetszőleges objektum.
ItemsControl Tetszőleges objektumok gyűjteménye.
HeaderedItemsControl Egy fejléc és egy elemgyűjtemény, amelyek mindegyike tetszőleges objektum.

Az osztályoktól öröklő vezérlők ugyanazt a tartalomtípust tartalmazhatják, és ugyanúgy kezelhetik a tartalmat. Az alábbi ábrán egy vezérlő látható minden olyan tartalommodellből, amely képet és szöveget tartalmaz:

Képernyőkép, amely négy különböző vezérlőt jelenít meg, egyet az egyes tartalommodellekből.

Egyetlen tetszőleges objektumot tartalmazó vezérlők

A ContentControl osztály egyetlen tetszőleges tartalmat tartalmaz. A tartalom tulajdonsága Content. A következő vezérlők öröklik a ContentControl-tól és annak tartalommodelljét használják:

Az alábbi ábra négy gombot mutat be, amelyek egy sztringként megadott Content-t, egy DateTime objektumot, egy Rectangle-t, valamint egy Panel-mat ábrázolnak, ami Ellipse-et és TextBlock-t tartalmaz.

Képernyőkép, amely négy különböző tartalomtípusú gombot jelenít meg.

A Content tulajdonság beállítására példa: ContentControl.

Fejlécet és tetszőleges objektumot tartalmazó vezérlők

A HeaderedContentControl osztály az ContentControl-ből örököl, és a tartalmat fejléccel jeleníti meg. Az Contenttartalomtulajdonságot a ContentControl örökli, és meghatározza a Header tulajdonságot, amely a Objecttípusába tartozik; ezért mindkettő tetszőleges objektum lehet.

A következő vezérlők öröklik a HeaderedContentControl-tól és annak tartalommodelljét használják:

Az alábbi ábrán két TabItem objektum látható. Az első TabItem a UIElement objektumokat tartalmazza, mint a Header és a Content. A Header egy olyan StackPanel-re van állítva, amely tartalmaz egy Ellipse-t és egy TextBlock-t. A Content úgy van beállítva, hogy egy StackPanel tartalmaz egy TextBlock-t és egy Label-t. A második TabItem egy sztringet tartalmaz a Header-ben, és a TextBlock-ban egy Content-t.

TabControlt, amely a Fejléc tulajdonság különböző típusait használja.

Az TabItem objektumok létrehozásának módjáról a HeaderedContentControlcímű témakörben talál példát.

Tetszőleges objektumok gyűjteményét tartalmazó vezérlők

A ItemsControl osztály a Control öröklődik, és több elemet is tartalmazhat, például sztringeket, objektumokat vagy egyéb elemeket. A tartalom tulajdonságai ItemsSource és Items. ItemsSource-t általában arra használják, hogy feltöltsék a ItemsControl-et egy adatgyűjteménnyel. Ha nem szeretne gyűjteményt használni a ItemsControlfeltöltéséhez, a Items tulajdonság használatával adhat hozzá elemeket.

A következő vezérlők öröklik a ItemsControl-tól és annak tartalommodelljét használják:

Az alábbi ábrán az alábbi típusú elemeket tartalmazó ListBox látható:

Képernyőkép, amely egy négy típusú tartalmat tartalmazó ListBoxot jelenít meg.

Fejlécet és tetszőleges objektumok gyűjteményét tartalmazó vezérlők

A HeaderedItemsControl osztály a ItemsControl öröklődik, és több elemet, például sztringeket, objektumokat vagy egyéb elemeket és fejléceket tartalmazhat. Örökli a ItemsControl tartalomtulajdonságokat, ItemsSourceés Items, és meghatározza a Header tulajdonságot, amely tetszőleges objektum lehet.

A következő vezérlők öröklik a HeaderedItemsControl-tól és annak tartalommodelljét használják:

UIElement-objektumok gyűjteményét tartalmazó osztályok

A Panel osztály elhelyezi és elrendezi a gyermek UIElement objektumokat. A tartalom tulajdonsága Children.

A következő osztályok örökölnek a Panel osztálytól, és annak tartalommodelljét használják:

További információ: Panelek áttekintése.

A felhasználói felület megjelenését befolyásoló osztályok

A Decorator osztály vizuális effektusokat alkalmaz egyetlen alárendelt elem UIElementköré vagy rá. A tartalom tulajdonsága Child. A következő osztályok örökölnek Decorator, és annak tartalommodelljét használják:

Az alábbi ábrán egy TextBox látható, amely körül Border van (díszítve).

Fekete szegélyű szövegdoboz
Szegéllyel rendelkező szövegdoboz

Vizuális visszajelzést küldő osztályok a felhasználói felületről

A Adorner osztály vizuális jeleket biztosít a felhasználó számára. Például használjon Adorner-t, hogy funkcionális fogópontokat adjon az elemekhez, vagy hogy állapotinformációkat szolgáltasson egy vezérlőről. A Adorner osztály egy keretrendszert biztosít, amely lehetővé teszi saját díszítők létrehozását. A WPF nem biztosít implementált adornereket. További információ: Adorners overview.

Osztályok, amelyek lehetővé teszik a felhasználók számára a szöveg bevitelét

A WPF három elsődleges vezérlőt biztosít, amelyek lehetővé teszik a felhasználók számára, hogy szöveget írjanak be. Minden vezérlőelem másképp jeleníti meg a szöveget. Az alábbi táblázat felsorolja ezt a három szöveghez kapcsolódó vezérlőt, azok szövegmegjelenítési képességeit, valamint a vezérlő szövegét tartalmazó tulajdonságokat.

Vezérlő A szöveg a következőképpen jelenik meg: Tartalomtulajdonság
TextBox Egyszerű szöveg Text
RichTextBox Formázott szöveg Document
PasswordBox Rejtett szöveg (a karakterek maszkoltak) Password

A szöveget megjelenítő osztályok

Több osztály is használható egyszerű vagy formázott szövegek megjelenítésére. A TextBlock használatával kis mennyiségű szöveget jeleníthet meg. Ha nagy mennyiségű szöveget szeretne megjeleníteni, használja a FlowDocumentReader, FlowDocumentPageViewervagy FlowDocumentScrollViewer vezérlőket.

A TextBlock két tartalomtulajdonságból áll: Text és Inlines. Ha konzisztens formázást használó szöveget szeretne megjeleníteni, gyakran a Text tulajdonság a legjobb választás. Ha a szöveg különböző formázását tervezi használni, használja a Inlines tulajdonságot. A Inlines tulajdonság Inline objektumok gyűjteménye, amelyek meghatározzák a szöveg formázását.

Az alábbi táblázat a FlowDocumentReader, FlowDocumentPageViewerés FlowDocumentScrollViewer osztályok tartalomtulajdonságát sorolja fel.

Vezérlő Tartalomtulajdonság Tartalomtulajdonság típusa
FlowDocumentPageViewer Dokumentum IDocumentPaginatorSource
FlowDocumentReader Dokumentum FlowDocument
FlowDocumentScrollViewer Dokumentum FlowDocument

A FlowDocument implementálja a IDocumentPaginatorSource felületet; ezért mindhárom osztály egy FlowDocument-őt tartalomként vehet fel.

A szöveget formázó osztályok

TextElement és a kapcsolódó osztályok lehetővé teszik a szöveg formázását. TextElement objektumok TextBlock és FlowDocument objektumokban tartalmaznak és formáznak szöveget. A TextElement objektumok két elsődleges típusa Block és Inline elem. A Block elem egy szövegblokkot jelöl, például egy bekezdést vagy egy listát. Egy Inline elem a szöveg egy részét jelöli egy blokkban. Számos Inline osztály határozza meg annak a szövegnek a formázását, amelyre alkalmazzák őket. Minden TextElement saját tartalommodellel rendelkezik. További információ: TextElement tartalommodell áttekintése.

Lásd még