Frage

In meiner WPF ListBox, habe ich einen Stil mit einem Control für eine ListBoxItem. Innerhalb dieses Control habe ich ein Label definiert. Basierend auf einige Details, muss ich die Schriftgröße des Etiketts ändern. Also von meinem Code-behind, muss ich feststellen, was die Schrift sein sollte, und dann muss ich es eingestellt.

Hier ist meine Art mit dem Control (Ich habe einige irrelevant Kontrollen gezupft)

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

Wie kann ich das tun?

War es hilfreich?

Lösung

Wenn ich Sie richtig verstehe, haben Sie wahrscheinlich etwas Ähnliches wie die folgenden tun, und einfach die Fontsize-Eigenschaft ändern auf der ListBoxItem selbst; es wird automatisch auf dem Etikett reflektiert werden. Kopieren Sie diese in VS und sehen sie in Aktion!

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

Andere Tipps

Sie könnten in der Lage sein, eine Valueconverter auf der Fontsize Eigentum .. aber ich bin nicht 100% sicher, ob sie in einem Control arbeiten .. ich scheine Silverlight hat ein Problem damit zu erinnern, aber ich kann mich nicht erinnern, wenn es in WPF gearbeitet.

Wenn Sie den Schriftgrad in der Code-behind festlegen möchten, sollten Sie Fontsize von der Control entfernen, setzen Sie es dann für die ListBoxItem in der Code-Behind. Wenn Sie die gleiche Größe für alle ListBoxItems festlegen mögen setzen nur den Schriftgrad der List-Box in dem Code-Behind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top