Model zawartości WPF
Windows Presentation Foundation (WPF) to platforma prezentacji, która udostępnia wiele kontrolek i typów przypominających kontrolki, których głównym celem jest wyświetlanie różnych typów zawartości. Aby określić, która kontrolka ma być używana lub która kontrolka ma pochodzić, należy poznać rodzaje obiektów, z których może najlepiej wyświetlać konkretna kontrolka.
W tym temacie przedstawiono podsumowanie modelu zawartości dla kontrolek i typów przypominających kontrolkę WPF. Model zawartości opisuje zawartość, której można używać w kontrolce. W tym temacie wymieniono również właściwości zawartości dla każdego modelu zawartości. Właściwość zawartości jest właściwością używaną do przechowywania zawartości obiektu.
Klasy zawierające dowolną zawartość
Niektóre kontrolki mogą zawierać obiekt dowolnego typu, taki jak ciąg, DateTime obiekt lub kontener, który UIElement jest kontenerem dla dodatkowych elementów. Na przykład obiekt Button może zawierać obraz i jakiś tekst lub CheckBox może zawierać wartość DateTime.Now.
WPF ma cztery klasy, które mogą zawierać dowolną zawartość. W poniższej tabeli wymieniono klasy dziedziczone z klasy Control.
| Klasa zawierająca dowolną zawartość | Zawartość |
|---|---|
| ContentControl | Pojedynczy dowolny obiekt. |
| HeaderedContentControl | Nagłówek i pojedynczy element, z których oba są dowolnymi obiektami. |
| ItemsControl | Kolekcja dowolnych obiektów. |
| HeaderedItemsControl | Nagłówek i kolekcja elementów, z których wszystkie są dowolnymi obiektami. |
Kontrolki dziedziczone z tych klas mogą zawierać ten sam typ zawartości i traktować zawartość w taki sam sposób. Poniższa ilustracja przedstawia jedną kontrolkę z każdego modelu zawartości zawierającego obraz i tekst:

Kontrolki zawierające pojedynczy dowolny obiekt
Klasa ContentControl zawiera pojedynczy element dowolnej zawartości. Jego właściwość zawartości to Content. Następujące kontrolki dziedziczą po ContentControl modelu zawartości i korzystają z niego:
Na poniższej ilustracji przedstawiono cztery przyciski, których Content parametr jest ustawiony na ciąg, DateTime obiekt, Rectangleobiekt , i , Panel który zawiera element Ellipse i TextBlock:

Aby zapoznać się z przykładem sposobu ustawiania Content właściwości, zobacz ContentControl.
Kontrolki zawierające nagłówek i pojedynczy dowolny obiekt
Klasa HeaderedContentControl dziedziczy z ContentControl i wyświetla zawartość z nagłówkiem. Dziedziczy właściwość content, Content, z ContentControl i definiuje Header właściwość typu Object; w związku z tym oba mogą być dowolnym obiektem.
Następujące kontrolki dziedziczą po HeaderedContentControl modelu zawartości i korzystają z niego:
Poniższa ilustracja przedstawia dwa TabItem obiekty. TabItem Pierwszy obiekt ma UIElement obiekty jako i HeaderContent. Właściwość jest ustawiona Header na wartość StackPanel , która zawiera element Ellipse i TextBlock. Właściwość jest ustawiona Content na wartość StackPanel , która zawiera element TextBlock i Label. TabItem Drugi zawiera ciąg w obiekcie Header i w TextBlock obiekcie Content.

Aby zapoznać się z przykładem tworzenia TabItem obiektów, zobacz HeaderedContentControl.
Kontrolki zawierające kolekcję dowolnych obiektów
Klasa ItemsControl dziedziczy z Control elementów i może zawierać wiele elementów, takich jak ciągi, obiekty lub inne elementy. Jej właściwości zawartości to ItemsSource i Items. ItemsSource jest zwykle używany do wypełniania za ItemsControl pomocą kolekcji danych. Jeśli nie chcesz używać kolekcji do wypełniania ItemsControlelementu , możesz dodać elementy przy użyciu Items właściwości .
Następujące kontrolki dziedziczą po ItemsControl modelu zawartości i korzystają z niego:
Poniższa ilustracja przedstawia obiekt ListBox zawierający następujące typy elementów:

Kontrolki zawierające nagłówek i kolekcję dowolnych obiektów
Klasa HeaderedItemsControl dziedziczy z ItemsControl elementów i może zawierać wiele elementów, takich jak ciągi, obiekty lub inne elementy i nagłówek. Dziedziczy ItemsControl on właściwości zawartości , ItemsSourcei Items, i definiuje Header właściwość, która może być dowolnym obiektem.
Następujące kontrolki dziedziczą po HeaderedItemsControl modelu zawartości i korzystają z niego:
Klasy zawierające kolekcję obiektów UIElement
Klasa Panel umieszcza i rozmieszcza obiekty podrzędne UIElement . Jego właściwość zawartości to Children.
Następujące klasy dziedziczą z Panel klasy i używają jej modelu zawartości:
Aby uzyskać więcej informacji, zobacz Panele — omówienie.
Klasy wpływające na wygląd elementu UIElement
Klasa Decorator stosuje efekty wizualne do pojedynczego elementu podrzędnego lub wokół pojedynczego elementu podrzędnego UIElement. Jego właściwość zawartości to Child. Następujące klasy dziedziczą po Decorator modelu zawartości i używają go:
Na poniższej ilustracji pokazano, TextBox że element ma (jest ozdobiony Border ) wokół niego.

TextBlock z obramowaniem
Klasy, które przekazują wizualną opinię na temat elementu UIElement
Klasa Adorner udostępnia wizualne sygnały dla użytkownika. Na przykład użyj elementu Adorner , aby dodać funkcjonalne dojścia do elementów lub podać informacje o stanie kontrolki. Klasa Adorner udostępnia strukturę, dzięki której można tworzyć własne moduły adorujące. WPF nie zapewnia żadnych zaimplementowanych modułów adoratora. Aby uzyskać więcej informacji, zobacz Omówienie modułów Adorners.
Klasy, które umożliwiają użytkownikom wprowadzanie tekstu
WPF udostępnia trzy podstawowe kontrolki, które umożliwiają użytkownikom wprowadzanie tekstu. Każda kontrolka wyświetla tekst inaczej. W poniższej tabeli wymieniono te trzy kontrolki związane z tekstem, ich możliwości podczas wyświetlania tekstu oraz ich właściwości zawierające tekst kontrolki.
| Kontrola | Tekst jest wyświetlany jako | Właściwość zawartości |
|---|---|---|
| TextBox | Zwykły tekst | Text |
| RichTextBox | Sformatowany tekst | Document |
| PasswordBox | Tekst ukryty (znaki są maskowane) | Password |
Klasy, które wyświetlają tekst
Do wyświetlania zwykłego lub sformatowanego tekstu można użyć kilku klas. TextBlock Służy do wyświetlania małych ilości tekstu. Jeśli chcesz wyświetlić duże ilości tekstu, użyj FlowDocumentReaderkontrolek , FlowDocumentPageViewerlub FlowDocumentScrollViewer .
Obiekt TextBlock ma dwie właściwości zawartości: Text i Inlines. Jeśli chcesz wyświetlić tekst, który używa spójnego formatowania, Text właściwość jest często najlepszym wyborem. Jeśli planujesz używać innego formatowania w całym tekście, użyj Inlines właściwości . Właściwość Inlines jest kolekcją Inline obiektów, które określają sposób formatowania tekstu.
W poniższej tabeli wymieniono właściwość zawartości dla FlowDocumentReaderklas , FlowDocumentPageVieweri FlowDocumentScrollViewer .
| Kontrola | Właściwość zawartości | Typ właściwości zawartości |
|---|---|---|
| FlowDocumentPageViewer | Dokument | IDocumentPaginatorSource |
| FlowDocumentReader | Dokument | FlowDocument |
| FlowDocumentScrollViewer | Dokument | FlowDocument |
Implementuje FlowDocumentIDocumentPaginatorSource interfejs, dlatego wszystkie trzy klasy mogą przyjmować FlowDocument jako zawartość.
Klasy formatujące tekst
TextElement i powiązane z nią klasy umożliwiają formatowanie tekstu. TextElement obiekty zawierają i formatują tekst w TextBlock obiektach i FlowDocument . Dwa podstawowe typy TextElement obiektów to Block elementy i Inline elementy. Element Block reprezentuje blok tekstu, taki jak akapit lub lista. Element Inline reprezentuje część tekstu w bloku. Wiele Inline klas określa formatowanie tekstu, do którego są stosowane. Każdy z nich TextElement ma własny model zawartości. Aby uzyskać więcej informacji, zobacz TextElement Content Model Overview (Omówienie modelu zawartości TextElement).