Model obsahu WPF

Windows Presentation Foundation (WPF) je prezentační platforma, která poskytuje mnoho typů ovládacích prvků a typů podobných ovládacím prvkům, jejichž primárním účelem je zobrazit různé typy obsahu. Chcete-li určit, který ovládací prvek použít nebo který ovládací prvek má být odvozen, měli byste porozumět druhům objektů, které může určitý ovládací prvek nejlépe zobrazit.

Toto téma shrnuje kon režim stanu l pro typy řízení a řízení WPF. Con režim stanu l popisuje, jaký obsah lze použít v ovládacím prvku. Toto téma obsahuje také vlastnosti obsahu pro každou kon režim stanu l. Vlastnost obsahu je vlastnost, která se používá k uložení obsahu objektu.

Třídy, které obsahují libovolný obsah

Některé ovládací prvky můžou obsahovat objekt libovolného typu, například řetězec, DateTime objekt nebo UIElement kontejner pro další položky. Například Button může obsahovat obrázek a nějaký text; nebo CheckBox může obsahovat hodnotu DateTime.Now.

WPF má čtyři třídy, které mohou obsahovat libovolný obsah. Následující tabulka uvádí třídy, které dědí z Control.

Třída, která obsahuje libovolný obsah Obsah
ContentControl Jeden libovolný objekt.
HeaderedContentControl Záhlaví a jedna položka, z nichž oba jsou libovolné objekty.
ItemsControl Kolekce libovolných objektů.
HeaderedItemsControl Záhlaví a kolekce položek, z nichž všechny jsou libovolné objekty.

Ovládací prvky, které dědí z těchto tříd, mohou obsahovat stejný typ obsahu a zacházet s obsahem stejným způsobem. Následující obrázek znázorňuje jeden ovládací prvek z každého con režim stanu l, který obsahuje obrázek a nějaký text:

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

Ovládací prvky, které obsahují jeden libovolný objekt

Třída ContentControl obsahuje jeden kus libovolného obsahu. Jeho obsah vlastnost je Content. Následující ovládací prvky dědí a ContentControl používají jeho kon režim stanu l:

Následující obrázek znázorňuje čtyři tlačítka, jejichž Content je nastavena na řetězec, DateTime objekt, Rectanglea a obsahující Panel znak Ellipse a TextBlock:

Screenshot that shows four buttons with different content types.

Příklad Content nastavení vlastnosti naleznete v tématu ContentControl.

Ovládací prvky, které obsahují záhlaví a jeden libovolný objekt

Třída HeaderedContentControl dědí a ContentControl zobrazuje obsah s hlavičkou. Dědí vlastnost obsahu , Contentz a definuje Header vlastnost, která je typu Object; proto oba mohou být libovolným ContentControl objektem.

Následující ovládací prvky dědí a HeaderedContentControl používají jeho kon režim stanu l:

Následující obrázek znázorňuje dva TabItem objekty. První TabItem obsahuje UIElement objekty jako Header a Content. Je Header nastavena StackPanel na hodnotu, která obsahuje a EllipseTextBlock. Je Content nastavena StackPanel na hodnotu, která obsahuje a TextBlock .Label Druhý TabItem má řetězec v řetězci Header a TextBlock v sadě Content.

TabControl that uses different types in the Header property.

Příklad vytvoření TabItem objektů naleznete v tématu HeaderedContentControl.

Ovládací prvky obsahující kolekci libovolných objektů

Třída ItemsControl dědí a Control může obsahovat více položek, jako jsou řetězce, objekty nebo jiné prvky. Jeho vlastnosti obsahu jsou ItemsSource a Items. ItemsSource se obvykle používá k naplnění kolekcí ItemsControl dat. Pokud nechcete použít kolekci k naplnění ItemsControl, můžete přidat položky pomocí Items vlastnosti.

Následující ovládací prvky dědí a ItemsControl používají jeho kon režim stanu l:

Následující obrázek ukazuje ListBox , že obsahuje tyto typy položek:

Screenshot that shows a ListBox with four types of content.

Ovládací prvky, které obsahují záhlaví a kolekci libovolných objektů

Třída HeaderedItemsControl dědí a ItemsControl může obsahovat více položek, jako jsou řetězce, objekty nebo jiné prvky a záhlaví. Dědí ItemsControl vlastnosti ItemsSourceobsahu a Itemsa definuje Header vlastnost, která může být libovolným objektem.

Následující ovládací prvky dědí a HeaderedItemsControl používají jeho kon režim stanu l:

Třídy obsahující kolekci objektů UIElement

Pozice Panel třídy a uspořádání podřízených UIElement objektů. Jeho obsah vlastnost je Children.

Následující třídy dědí z Panel třídy a používají její con režim stanu l:

Další informace najdete v tématu Přehled panelů.

Třídy, které ovlivňují vzhled uiElement

Třída Decorator používá vizuální efekty na nebo kolem jednoho podřízeného UIElementobjektu . Jeho obsah vlastnost je Child. Následující třídy dědí a Decorator používají její con režim stanu l:

Na následujícím obrázku je znázorněnoTextBox, které má kolem sebe (je zdobeno).Border

TextBox with black border
TextBlock, který má ohraničení

Třídy, které poskytují vizuální zpětnou vazbu k UIElement

Třída Adorner poskytuje vizuální upozornění pro uživatele. Můžete například použít Adorner k přidání funkčních popisovačů k prvkům nebo poskytnutí informací o stavu ovládacího prvku. Třída Adorner poskytuje architekturu, abyste mohli vytvořit vlastní doplňky. WPF neposkytuje žádné implementované doplňky. Další informace najdete v tématu Přehled doplňku Adorners.

Třídy, které uživatelům umožňují zadat text

WPF poskytuje tři primární ovládací prvky, které uživatelům umožňují zadávat text. Každý ovládací prvek zobrazuje text jinak. Následující tabulka uvádí tyto tři ovládací prvky související s textem, jejich možnosti při zobrazení textu a jejich vlastnosti, které obsahují text ovládacího prvku.

Ctrl Text se zobrazí jako Vlastnost obsahu
TextBox Prostý text Text
RichTextBox Formátovaný text Document
PasswordBox Skrytý text (znaky jsou maskované) Password

Třídy, které zobrazují váš text

K zobrazení prostého nebo formátovaného textu lze použít několik tříd. Můžete použít TextBlock k zobrazení malých objemů textu. Pokud chcete zobrazit velké množství textu, použijte ovládací FlowDocumentReaderprvky , FlowDocumentPageViewernebo FlowDocumentScrollViewer ovládací prvky.

TextBlock dvě vlastnosti obsahu: Text a Inlines. Pokud chcete zobrazit text, který používá konzistentní formátování, Text je tato vlastnost často vaší nejlepší volbou. Pokud máte v úmyslu používat v celém textu jiné formátování, použijte Inlines vlastnost. Vlastnost Inlines je kolekce Inline objektů, které určují, jak formátovat text.

Následující tabulka uvádí vlastnost obsahu pro FlowDocumentReader, FlowDocumentPageViewera FlowDocumentScrollViewer třídy.

Ctrl Vlastnost obsahu Typ vlastnosti obsahu
FlowDocumentPageViewer Dokument IDocumentPaginatorSource
FlowDocumentReader Dokument FlowDocument
FlowDocumentScrollViewer Dokument FlowDocument

Implementuje FlowDocumentIDocumentPaginatorSource rozhraní, a proto všechny tři třídy mohou mít jako FlowDocument obsah.

Třídy, které formátuje text

TextElement a související třídy umožňují formátovat text. TextElement objekty obsahují a formátují text v TextBlock objektech a FlowDocument objekty. Dva primární typy TextElement objektů jsou Block prvky a Inline prvky. Prvek Block představuje blok textu, například odstavec nebo seznam. Prvek Inline představuje část textu v bloku. Mnoho Inline tříd určuje formátování textu, na který jsou použity. Každý TextElement má svůj vlastní con režim stanu l. Další informace najdete v přehledu modelu obsahu TextElement.

Viz také