Pregunta

En mi WPF ListBox, tengo un estilo con un ControlTemplate para un ListBoxItem. Dentro de ese ControlTemplate tengo una etiqueta definida. Según algunos detalles, necesito cambiar el tamaño de fuente de la etiqueta. Entonces, desde mi código subyacente, necesito determinar cuál debería ser la fuente y luego debo configurarla.

Aquí está mi estilo con ControlTemplate (he eliminado algunos controles irrelevantes)

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

¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Si lo entiendo correctamente, probablemente pueda hacer algo similar a lo siguiente y simplemente cambiar la propiedad FontSize en el propio ListBoxItem; se reflejará automáticamente en su etiqueta. ¡Copia esto en VS y míralo en acción!

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

Otros consejos

Es posible que pueda usar un ValueConverter en FontSize propiedad ... pero no estoy 100% seguro si funcionan dentro de un ControlTemplate ... Parece que recuerdo que Silverlight tenía problemas con él, pero no recuerdo si funcionó en WPF.

Si desea establecer FontSize en el código detrás, debe eliminar FontSize de ControlTemplate y luego configurarlo para ListBoxItem en el código subyacente. Si desea establecer el mismo tamaño para todos los ListBoxItems, simplemente configure FontSize de ListBox en el código subyacente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top