Domanda

Nel mio ListBox WPF, ho uno stile con un ControlTemplate per un ListBoxItem. All'interno di quel ControlTemplate ho un'etichetta definita. Sulla base di alcuni dettagli, devo modificare la dimensione del carattere dell'etichetta. Quindi dal mio code-behind, devo determinare quale dovrebbe essere il carattere e quindi devo impostarlo.

Ecco il mio stile con ControlTemplate (ho eliminato alcuni controlli non pertinenti)

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

Come posso farlo?

È stato utile?

Soluzione

Se ti capisco correttamente, puoi probabilmente fare qualcosa di simile al seguente e semplicemente cambiare la proprietà FontSize su ListBoxItem stesso; si rifletterà automaticamente sulla tua etichetta. Copia questo in VS e vederlo in azione!

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

Altri suggerimenti

Potresti essere in grado di utilizzare un ValueConverter su FontSize proprietà .. ma non sono sicuro al 100% se funzionano all'interno di un ControlTemplate .. Mi sembra di ricordare che Silverlight abbia dei problemi con esso, ma non ricordo se funzionasse in WPF.

Se si desidera impostare FontSize nel codice sottostante, è necessario rimuovere FontSize da ControlTemplate, quindi impostarlo per ListBoxItem nel code-behind. Se vuoi impostare la stessa dimensione per tutti gli ListBoxItems, imposta FontSize di ListBox nel code-behind.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top