我需要在一个正方形中显示一个数字,水平和垂直居中。
当我试图为此目的使用标签时,它似乎完全忽略了中心。因此,我决定使用网格并在网格上显示标签,因为它完美居中。
我需要使用模板,因为有几个主题可用。从我在互联网上发现的,我想到了这一点(暂时忽略了中心)
<ControlTemplate x:Key="ClockTemplate">
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Background" Value="White"/>
</Style>
</Grid.Style>
<Label>
<Label.Style>
<Style TargetType="Label">
<Setter Property="Foreground" Value="#376092"/>
</Style>
</Label.Style>
<ContentPresenter/>
</Label>
</Grid>
</ControlTemplate>
是正确的。使用方法如下:
<ContentControl Content="20" Height="64" Width="64" Template="{DynamicResource ClockTemplate}"/>
内容没有显示,我做错了什么?另外,有没有更好的方法来实现我的目标?
答案 0 :(得分:2)
根据我的理解,这不是正确的方法。如下所示,您必须为控件编写ControlTemplate
,而不是创建Style
,如果可能,也请使用StaticResource
绑定。它比Dynamic
绑定更快。请注意,我没有在Label
内提及ControlTemplate
尺寸。请根据您的需要进行
<Style x:Key="ContentControlStyle"
TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Grid Background="White">
<Label Foreground="#376092"
Width="200"
Height="100" Content="{TemplateBinding Content}">
</Label>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
将您的ContentControl
与新创建的Style
绑定,如下所示
<ContentControl Style="{StaticResource ContentControlStyle} ">
如果您的要求只是在ContentControl
中设置了一些值,请改用Label
并更改Style
的{{1}}。因为Label
很重