C# 为输入创建非矩形控件

C# 为输入创建非矩形控件,c#,wpf,windows-phone-7,controls,C#,Wpf,Windows Phone 7,Controls,在为Windows Phone编写应用程序时,我想创建自定义控件,该控件继承自TextBlock。但此控件的形式不应为矩形。我尝试使用Blend来完成此任务,但找不到用于更改控件形式的属性 在上面的图像上有控制的示意图。我想,有可能设置控制角的坐标,但我没有找到。谢谢。这个问题可以通过几种方式解决,我选择使用一个模板和他们的图形。在角色中,图形将执行标准的矩形。无法设置TextBlock的模板,因此我选择了一个更通用的控件-Label 例如: <Style TargetType="{x:

在为Windows Phone编写应用程序时,我想创建自定义控件,该控件继承自
TextBlock
。但此控件的形式不应为矩形。我尝试使用Blend来完成此任务,但找不到用于更改控件形式的属性


在上面的图像上有控制的示意图。我想,有可能设置控制角的坐标,但我没有找到。谢谢。

这个问题可以通过几种方式解决,我选择使用一个
模板
和他们的图形。在角色中,图形将执行标准的
矩形
。无法设置
TextBlock
的模板,因此我选择了一个更通用的控件-
Label

例如:

<Style TargetType="{x:Type Label}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Label}">
                <Border Background="{TemplateBinding Background}">
                    <Grid>
                        <Rectangle Width="30" Height="70" Fill="Gainsboro" StrokeThickness="1" Margin="0,0,0,10" Panel.ZIndex="0" />
                        <ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="33,0,0,25" Panel.ZIndex="1" />
                        <Rectangle MinWidth="55" Height="30" StrokeThickness="1" Fill="Gainsboro" HorizontalAlignment="Left" Margin="30,30,0,0" />
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
输出

当然,您需要更改
模板
,以满足您的需要

注意以下几种方法

  • 要获得更复杂的方法和更高级的方法,您可以使用自己的
    装饰器
    ,在
    DrawingContext
    的帮助下,您将绘制对象。示例-

  • 使用
    几何图形
    的属性(其中为
    路径
    ),设置所需的图形形状。示例-


文本将在任意一侧?文本将进入边框。我理解,但只有水平或垂直?抱歉,只有水平。为什么不创建一个带有专用控件模板的样式来改变某个
文本框的外观,而不是继承?谢谢!windows phone中并没有标签控件,WPF中只有类装饰器,但我将以这种方式重写。
<Label Background="Transparent" Width="200" Height="90" Content="Test your label" />