Gewusst wie: Ersetzen des Standardinhaltshosts für eine "TextBox"
Aktualisiert: November 2007
Dieses Beispiel zeigt, wie Sie mithilfe von Windows Presentation Foundation (WPF)-Stilen den Standardinhaltshost für ein TextBox ersetzen.
Der Inhaltshost ist das Element, das den Inhalt von TextBox rendert. Die standardmäßige Steuerelementvorlage für ein TextBox-Element gibt ScrollViewer als Inhaltshost an. Ein Beispiel für die standardmäßige Steuerelementvorlage für ein TextBox-Element finden Sie unter Beispiel für ein TextBox-ControlTemplate.
Wenn die Bildlauffeatures von ScrollViewer unerwünscht oder unnötig sind, kann ein einfacheres AdornerDecorator-Element als Inhaltshost für TextBox angegeben werden.
Ein Arbeitsbeispiel, in dem dies veranschaulicht wird, finden Sie unter Beispiel zum Ersetzen des Standardinhaltshosts für eine TextBox.
Beispiel
Die ControlTemplate für ein TextBox muss genau ein Element enthalten, das als Inhaltshostelement markiert ist. Weisen Sie dem Element den speziellen Namen PART_ContentHost zu, um es als Inhaltshost zu markieren. Bei dem Inhaltshostelement muss es sich um einen ScrollViewer oder um einen AdornerDecorator handeln. Vom Inhaltshostelement werden möglicherweise keine untergeordneten Elemente gehostet.
Im folgenden Extensible Application Markup Language (XAML)-Beispiel wird ein Stil definiert, der die standardmäßige Steuerelementvorlage für ein TextBox-Element überschreibt. Dieser Stil ist kompatibel mit Elementen, die von TextBoxBase abstammen. In dem Beispiel wird AdornerDecorator als Inhaltshost angegeben.
<Window.Resources>
<Style x:Key="TextBoxNoScrollViewer" TargetType="{x:Type TextBoxBase}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBoxBase}">
<Border
CornerRadius="2"
Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
>
<!--
The control template for a TextBox or RichTextBox must
include an element tagged as the content host. An element is
tagged as the content host element when it has the special name
PART_ContentHost. The content host element must be a ScrollViewer,
or an element that derives from Decorator.
-->
<AdornerDecorator
x:Name="PART_ContentHost"
Focusable="False"
/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
Im folgenden XAML-Beispiel wird ein TextBox-Element definiert, in dem der zuvor deklarierte Stil verwendet wird, indem das Style-Attribut mit einem statischen Ressourcenverweis auf das x:Key-Attribut gekoppelt wird
<TextBox
Grid.Column="0"
AcceptsReturn="True"
AcceptsTab="True"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
Style="{StaticResource TextBoxNoScrollViewer}"
>
TextBox styled not to use a ScrollViewer as the content host.
</TextBox>