在XAML中,我正在尝试创建一个非常简单的“内容容器”,其中包含一个随机元素(在这种情况下它是TextBlock
),但以下内容只是空白,并且不包含指定了TextBlock
元素。
ContentControl
是否是在这种情况下使用的正确元素?
<ContentControl>
<ContentControl.Content>
<TextBlock Text="Hello" />
</ContentControl.Content>
<ContentControl.Template>
<ControlTemplate>
<Border Background="Red">
<ContentPresenter />
</Border>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
答案 0 :(得分:1)
只需在ControlTemplate上设置TargetType="ContentControl"
:
<ContentControl>
<ContentControl.Content>
<TextBlock Text="Hello" />
</ContentControl.Content>
<ContentControl.Template>
<ControlTemplate TargetType="ContentControl"> <!-- here -->
<Border Background="Red">
<ContentPresenter />
</Border>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
为了使其可重用,您可以声明一个ContentControl样式:
<Style TargetType="ContentControl" x:Key="RedBorderContentControlStyle">
<Setter Property="Background" Value="Red"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
并像这样使用它:
<ContentControl Style="{StaticResource RedBorderContentControlStyle}">
<TextBlock Text="Hello"/>
</ContentControl>