2010-01-03 10 views
8

Ich habe mich nur gefragt, ob es möglich wäre, die Liste der verfügbaren FontStyle s und FontWeight s an eine ComboBox zu binden?Binding FontStyles und FontWeights zu WPF ComboBox

Um zum Beispiel die Liste der Schriftarten auf eine Combobox binden Sie verwenden können:

FontComboBox.ItemsSource = Fonts.SystemFontFamilies; 

Kann ich auch etwas für:

FontStyleComboBox.ItemsSource = .... 
FontWeightComboBox.ItemsSource = .... ? 

Wäre es Reflexion erfordern auf der System.Windows.FontWeights und System.Windows.FontStyles Klassen oder würde es einen leichteren Weg geben?

Dank

Antwort

11

Für die Schriftfamilien Combo:

<ComboBox Name="Families" ItemsSource="{x:Static Fonts.SystemFontFamilies}"/> 

Für die Schriftstile:

<ComboBox Name="Styles"> 
    <x:Static Member="FontStyles.Normal"/> 
    <x:Static Member="FontStyles.Italic"/> 
    <x:Static Member="FontStyles.Oblique"/> 
</ComboBox> 

Und für die Schriftschnitte:

<ComboBox Name="Weights"> 
    <x:Static Member="FontWeights.Black"/> 
    <x:Static Member="FontWeights.Bold"/> 
    <x:Static Member="FontWeights.DemiBold"/> 
    <x:Static Member="FontWeights.ExtraBlack"/> 
    <x:Static Member="FontWeights.ExtraBold"/> 
    <x:Static Member="FontWeights.ExtraLight"/> 
    <x:Static Member="FontWeights.Heavy"/> 
    <x:Static Member="FontWeights.Light"/> 
    <x:Static Member="FontWeights.Medium"/> 
    <x:Static Member="FontWeights.Normal"/> 
    <x:Static Member="FontWeights.Regular"/> 
    <x:Static Member="FontWeights.SemiBold"/> 
    <x:Static Member="FontWeights.Thin"/> 
    <x:Static Member="FontWeights.UltraBlack"/> 
    <x:Static Member="FontWeights.UltraBold"/> 
    <x:Static Member="FontWeights.UltraLight"/> 
</ComboBox> 

Und jetzt Test:

<TextBlock 
    Text="This is some text." 
    FontFamily="{Binding ElementName=Families, Path=SelectedItem}" 
    FontStyle="{Binding ElementName=Styles, Path=SelectedItem}" 
    FontWeight="{Binding ElementName=Weights, Path=SelectedItem}"/> 
+0

Ja - das ist wahrscheinlich die vernünftigste Art und Weise, darüber zu gehen, Danke :) – Haemoglobin

3

Ein weiterer -

<ComboBox 
     Name="FontStretches"> 
     <x:Static 
      Member="FontStretches.Condensed" /> 
     <x:Static 
      Member="FontStretches.Expanded" /> 
     <x:Static 
      Member="FontStretches.ExtraCondensed" /> 
     <x:Static 
      Member="FontStretches.ExtraExpanded" /> 
     <x:Static 
      Member="FontStretches.Medium" /> 
     <x:Static 
      Member="FontStretches.Normal" /> 
     <x:Static 
      Member="FontStretches.SemiCondensed" /> 
     <x:Static 
      Member="FontStretches.SemiExpanded" /> 
     <x:Static 
      Member="FontStretches.UltraCondensed" /> 
     <x:Static 
      Member="FontStretches.UltraExpanded" /> 
    </ComboBox> 
2

großer Beitrag! Ich wollte nur etwas zu Font Weights hinzufügen. Die FontWeights-Klasse verfügt über alle oben aufgeführten statischen Eigenschaften und kapselt nur eine Zahl von 1 bis 999 ein. Einige der Eigenschaften mit unterschiedlichen Namen enthalten die gleichen Werte, sodass Duplikate entstehen. Plus das obige Beispiel hatte sie nicht in Ordnung.

Ref: - FontWeights Class

Hier sind sie in Ordnung, Duplikate entfernt und Kommentare das Gewicht Nummer für jede zeigt:

 <!--100--> 
     <x:Static 
     Member="FontWeights.Thin" /> 
     <!--200--> 
     <x:Static 
     Member="FontWeights.ExtraLight" /> 
     <!--300--> 
     <x:Static 
     Member="FontWeights.Light" /> 
     <!--400--> 
     <x:Static 
     Member="FontWeights.Normal" /> 
     <!--500--> 
     <x:Static 
     Member="FontWeights.Medium" /> 
     <!--600--> 
     <x:Static 
     Member="FontWeights.SemiBold" /> 
     <!--700--> 
     <x:Static 
     Member="FontWeights.Bold" /> 
     <!--800--> 
     <x:Static 
     Member="FontWeights.ExtraBold" /> 
     <!--900--> 
     <x:Static 
     Member="FontWeights.Heavy" /> 
     <!--950--> 
     <x:Static 
     Member="FontWeights.ExtraBlack" /> 
1

Und das letzte, ich denke:

<ComboBox Name="FontSizes"> 
    <ComboBoxItem Content="8" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="9" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="10" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="11" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="12" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="14" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="16" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="18" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="20" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="22" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="24" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="26" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="28" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="36" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="48" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="72" HorizontalContentAlignment="Right"/> 
</ComboBox> 

Ich suchte das Internet überall, aber konnte nicht herausfinden, wie man die Standardliste der Schriftgrößen erhält. Scheint müssen wir es hart codieren.