Я просто задавался вопросом, будет ли возможно связать список доступных FontStyle
s и FontWeight
s к a ComboBox
?
Например, для привязки списка шрифтов к полю комбинированного списка можно использовать:
FontComboBox.ItemsSource = Fonts.SystemFontFamilies;
Могу я также иметь что-то для:
FontStyleComboBox.ItemsSource = ....
FontWeightComboBox.ItemsSource = .... ?
Это потребовало бы отражения о System.Windows.FontWeights
и System.Windows.FontStyles
классы или там были бы более легким путем, чем это?
Спасибо
Для семейства шрифтов:
<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}"/>
Еще одно -
<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>
Отличный пост! Я просто хотел добавить кое-что о толщине шрифта. Класс 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" />