Создать рамочный ярлык в WPF - PullRequest
1 голос
/ 07 марта 2012

Мне нужно создать пользовательскую метку в 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 голосов
/ 07 марта 2012

Поместите Grid с девятью элементами Border под TextBlock.Работайте задом наперед, чтобы найти ширину центральной строки и столбца.

<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 ипросто делай так примитивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...