我想在画布上画一个大号,用矩形包裹,但我不知道该怎么做。我的想法是创建一个样式,然后将它应用于一些改变其大小的Label实例:
<Style x:Key="CountdownLabel" TargetType="Label">
<Setter Property="FontFamily" Value="Arial"></Setter>
<Setter Property="Foreground" Value="Navy"></Setter>
<Setter Property="FontWeight" Value="Bold"></Setter>
<Setter Property="FontSize" Value="40"></Setter>
<Setter Property="FontStretch" Value="UltraExpanded"></Setter>
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Border>
<Rectangle Margin="0,0,0,0" Stroke="#60000000" StrokeThickness="1" StrokeDashArray="1 2" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
我在代码隐藏中设置label.Content=number.ToString()
,但未显示该数字。另外,我不知道如何调整标签大小以填充Canvas父级。
问候。
答案 0 :(得分:0)
您需要在模板中更正两件事:
这是一个有效的调整版本。我将边框更改为网格,因此它可以容纳两个子控件(虚线边框的矩形和显示内容的ContentPresenter)。我从example on MSDN偷走了ContentPresenter声明;它可能不完整,但它应该让你开始。
<Style x:Key="CountdownLabel" TargetType="Label">
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="Foreground" Value="Navy"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontSize" Value="40"/>
<Setter Property="FontStretch" Value="UltraExpanded"/>
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Grid>
<Rectangle Margin="0,0,0,0" Stroke="#60000000" StrokeThickness="1"
StrokeDashArray="1 2" MinWidth="10" MinHeight="10"/>
<ContentPresenter
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
RecognizesAccessKey="True" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>