2010-01-03 14 views
8

Me preguntaba si sería posible vincular la lista de FontStyle s disponibles y FontWeight a ComboBox?Vinculando estilos de fuente y fontWeights a WPF ComboBox

Por ejemplo, para obligar a la lista de fuentes para un cuadro combinado que puede utilizar:

FontComboBox.ItemsSource = Fonts.SystemFontFamilies; 

¿Puedo también tener algo para:

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

haría falta una reflexión sobre la System.Windows.FontWeights y System.Windows.FontStyles clases o habría una manera más fácil que eso?

Gracias

Respuesta

11

Para el combo de las familias de las fuentes:

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

Para los estilos de fuente:

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

Y para los pesos de fuentes:

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

Y ahora a prueba:

<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

Sí - esa es probablemente la forma más razonable de hacerlo, Gracias :) – Haemoglobin

3

Uno más -

<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

gran post! Solo quería agregar algo en Font Weights. La clase FontWeights tiene todas las propiedades estáticas enumeradas anteriormente y solo encapsulan un número del 1 al 999. Algunas de las propiedades con nombres diferentes encapsulan los mismos valores, por lo que terminas con duplicados. Además, el ejemplo anterior no los tenía en orden.

Ref: - FontWeights Class

Aquí están en orden, duplicados retirados, y los comentarios que muestran el número de peso para cada uno:

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

Y el último, supongo:

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

He buscado en Internet todo, pero no he podido encontrar la forma de obtener la lista estándar de tamaños de fuentes. Parece que tenemos que codificarlo.