Model zawartości WPF

Windows Presentation Foundation (WPF) to platforma prezentacji, która udostępnia wiele kontrolek i typów podobnych do kontrolek, 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 z której kontrolki pochodzi, należy zrozumieć rodzaje obiektów, z których może najlepiej wyświetlać konkretna kontrolka.

W tym temacie przedstawiono podsumowanie con tryb namiotu l dla typów kontrolek i typów przypominających kontrolkę WPF. Con tryb namiotu l opisuje zawartość, której można użyć w kontrolce. W tym temacie wymieniono również właściwości zawartości dla każdego con tryb namiotu l. 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 UIElement kontener dla dodatkowych elementów. Na przykład element 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 con tryb namiotu l zawierającego obraz i tekst:

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

Kontrolki zawierające pojedynczy dowolny obiekt

Klasa ContentControl zawiera pojedynczy fragment dowolnej zawartości. Jego właściwość zawartości to Content. Następujące kontrolki dziedziczą i ContentControl używają jej con tryb namiotu l:

Na poniższej ilustracji przedstawiono cztery przyciski, których Content zestaw jest ustawiony na ciąg, DateTime obiekt, Rectanglei , Panel który zawiera element Ellipse i TextBlock:

Screenshot that shows four buttons with different content types.

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 on właściwość zawartości , Contentz ContentControl i definiuje Header właściwość typu Object; w związku z tym oba mogą być dowolnym obiektem.

Następujące kontrolki dziedziczą i HeaderedContentControl używają jej con tryb namiotu l:

Poniższa ilustracja przedstawia dwa TabItem obiekty. TabItem Pierwszy obiekt ma UIElement obiekty jako Header i Content. 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 elemecie Header i TextBlock w obiekcie Content.

TabControl that uses different types in the Header property.

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 obiektu ItemsControl kolekcją 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ą i ItemsControl używają jej con tryb namiotu l:

Poniższa ilustracja przedstawia element ListBox zawierający następujące typy elementów:

Screenshot that shows a ListBox with four types of content.

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 oraz 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ą i HeaderedItemsControl używają jej con tryb namiotu l:

Klasy zawierające kolekcję obiektów UIElement

Klasy 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 con tryb namiotu l:

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 UIElementlub wokół niego. Jego właściwość zawartości to Child. Następujące klasy dziedziczą i Decorator używają jej con tryb namiotu l:

Na poniższej ilustracji pokazano, TextBox że element (jest ozdobiony Border ) wokół niego.

TextBox with black border
TextBlock z obramowaniem

Klasy, które dostarczają opinię wizualną na temat elementu UIElement

Klasa Adorner udostępnia użytkownikowi wizualne wskazówki. 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 platformę, dzięki czemu można tworzyć własne moduły adorujące. WPF nie zapewnia żadnych zaimplementowanych modułów adoratorów. 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.

Kontrolka 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

Kilka klas może służyć do wyświetlania zwykłego lub sformatowanego tekstu. 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 .

Właściwość 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 .

Kontrolka 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. TextElementobiekty 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 TextElement ma swój własny con tryb namiotu l. Aby uzyskać więcej informacji, zobacz TextElement Content Model Overview (Omówienie modelu zawartości TextElement).

Zobacz też