Как я могу изменить размер шрифта надписи в моей ControlTemplate - PullRequest
2 голосов
/ 20 января 2009

В моем WPF ListBox у меня есть стиль с ControlTemplate для ListBoxItem. Внутри этого 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 ]

4 голосов
/ 22 января 2009

Если я вас правильно понял, вы, вероятно, можете сделать что-то похожее на следующее и просто изменить свойство FontSize в самом ListBoxItem; это будет автоматически отражено на вашей этикетке. Скопируйте это в 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>
0 голосов
/ 03 февраля 2009

Если вы хотите установить FontSize в коде позади, вы должны удалить FontSize из ControlTemplate, а затем установить его для ListBoxItem в коде позади. Если вы хотите установить одинаковый размер для всех ListBoxItems, просто установите FontSize для ListBox в коде позади.

0 голосов
/ 20 января 2009

Возможно, вы сможете использовать ValueConverter в свойстве FontSize ... но я не уверен на 100%, работают ли они внутри шаблона ControlTemplate. Я не помню, работал ли он в WPF.

...