Привязка FontStyles и FontWeights к WPF ComboBox

Я просто задавался вопросом, будет ли возможно связать список доступных FontStyles и FontWeights к a ComboBox?

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

FontComboBox.ItemsSource = Fonts.SystemFontFamilies;

Могу я также иметь что-то для:

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

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

Спасибо

8
задан akjoshi 14 March 2012 в 12:41
поделиться

3 ответа

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

<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}"/>
11
ответ дан 5 December 2019 в 10:03
поделиться

Еще одно -

    <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>
3
ответ дан 5 December 2019 в 10:03
поделиться

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

Ссылка: - Класс FontWeights

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

      <!--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" />
2
ответ дан 5 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: