在WPF中创建带边框的标签

时间:2012-03-07 17:20:34

标签: .net wpf wpf-controls

我需要在WPF中创建一个自定义标签,带有这样的边框

enter image description here

所以我创建了一个新的自定义控件TextPlaceholder,它继承了System.Windows.Controls.Label

现在,如何在图像中对边框进行控制? 我可以在容器的资源中使用模板

<UserControl.Resources>
    <Style x:Key="InfoLabel"
           TargetType="{x:Type TextPlaceholder}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextPlaceholder}">
                    <Border BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Background="{TemplateBinding Background}"
                            Padding="{TemplateBinding Padding}"
                            SnapsToDevicePixels="true"
                            ??????? >

但是我想要一个控件本身就是这样,而不需要在其容器中添加额外的东西......

1 个答案:

答案 0 :(得分:0)

在TextBlock下放置一个包含九个Border元素的Grid。向后工作以找到中心行和列宽。

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition Width="Auto"/>
      <RowDefinition Width="######"/>
      <RowDefinition Width="Auto"/>
   </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>... Similar to Rows ...</Grid.ColumnDefinitions>
   <Border Grid.Row="0" Grid.Column="0" BorderBrush="Black" BorderThickness="1 1 0 0"/>
   ... etc ...
   <TextBlock Grid.RowSpan="3" Grid.ColumnSpan="3" Text="My Label" />
</Grid>

你甚至可以做圆角,或任何你想要的方式。

当然,你也可以创建一个Path,然后用这种方式绘制图元。