2010-01-03 2 views
8

Мне просто интересно узнать, можно ли связать список доступных FontStyle s и FontWeight s с ComboBox?Связывание FontStyles и FontWeights с WPF ComboBox

Например, чтобы связать список шрифтов, выпадающий список, вы можете использовать:

FontComboBox.ItemsSource = Fonts.SystemFontFamilies; 

Могу ли я что-нибудь для:

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

бы это требует размышления о System.Windows.FontWeights и System.Windows.FontStyles классов или было бы проще, чем это?

Благодаря

ответ

11

Для комбо семейств шрифтов:

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

Для стилей шрифта:

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

И для весов шрифта:

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

И теперь тест:

<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

Да - это, наверное, самый разумный способ обойти его, Спасибо :) – Haemoglobin

3

еще один -

<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

Великий пост! Я просто хотел добавить что-то на Font Weights. Класс FontWeights имеет все статические свойства, перечисленные выше, и они просто инкапсулируют число от 1 до 999. Некоторые из свойств с разными именами инкапсулируют одни и те же значения, поэтому вы получаете дубликаты. Плюс приведенный выше пример не имел их в порядке.

Ref: - FontWeights Class

Вот они в порядке, дубликаты удаляются, а также комментарии, показывающие количество веса для каждого из них:

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

И последний, я думаю:

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

Я искал Интернет по всему миру, но не смог узнать, как получить стандартный список размеров шрифтов. Кажется, нам нужно жестко записать его.

Смежные вопросы