如何在ControlTemplate中更改标签的字体大小

时间:2009-01-19 21:47:04

标签: wpf controltemplate templatebinding

在我的WPF ListBox中,我有一个带有ListBoxItem的ControlTemplate的样式。在ControlTemplate里面我定义了一个标签。根据一些细节,我需要更改标签的字体大小。所以从我的代码隐藏,我需要确定字体应该是什么,然后我需要设置它。

这是我使用ControlTemplate的风格(我已经删除了一些不相关的控件)

<Style x:Key="RecordTabList" TargetType="{x:Type ListBoxItem}">
            <Setter Property="Background" Value="{DynamicResource RecordIndexTabBackcolor}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>        
                            <Label
                                x:Name="myLabel" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="1" Margin="3,-2,0,-2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Foreground="{DynamicResource RecordIndexTabForeground}" 
                                FontSize="10" Height="Auto" BorderThickness="3,0,0,0"
                                Content="{Binding Path=Name}" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

我该怎么做?

3 个答案:

答案 0 :(得分:4)

如果我理解正确,你可以做类似下面的事情,只需更改ListBoxItem本身的FontSize属性;它会自动反映在您的标签上。将其复制到VS中并查看其中的操作!

<Window.Resources>
    <Style TargetType="ListBoxItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Label Content="{TemplateBinding Content}" FontSize="{TemplateBinding FontSize}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <ListBox Margin="12">
        <ListBoxItem Content="Test 1" FontSize="14"/>
        <ListBoxItem Content="Test 2" FontSize="18"/>
        <ListBoxItem Content="Test 3" FontSize="22"/>
    </ListBox>
</Grid>

答案 1 :(得分:0)

您可以在FontSize属性上使用ValueConverter ..但我不是百分之百确定它们是否在ControlTemplate中工作..我似乎记得Silverlight有问题,但我可以不记得它是否在WPF中有效。

答案 2 :(得分:0)

如果要在后面的代码中设置FontSize,则应从ControlTemplate中删除FontSize,然后在代码隐藏中为ListBoxItem设置它。如果要为所有ListBoxItem设置相同的大小,只需在代码隐藏中设置ListBox的FontSize。