2

私の 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>

これどうやってするの?

4

3 に答える 3

5

私が正しく理解していれば、おそらく次のようなことをして、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>
于 2009-01-22T06:27:54.123 に答える
0

FontSizeプロパティでValueConverterを使用できるかもしれません..しかし、それらがControlTemplate内で機能するかどうかは100%確信が持てません..Silverlightに問題があったことを覚えているようですが、それが機能したかどうかは思い出せませんWPF。

于 2009-01-19T22:21:13.780 に答える
0

コード ビハインドで FontSize を設定する場合は、ControlTemplate から FontSize を削除してから、コード ビハインドで ListBoxItem に設定する必要があります。すべての ListBoxItem に同じサイズを設定する場合は、コード ビハインドで ListBox の FontSize を設定するだけです。

于 2009-02-03T04:17:20.467 に答える