C# WPF FontFamily格式问题
我正在尝试设置字体系列组合框的选定值,该组合框已填充以下XAML:C# WPF FontFamily格式问题,c#,wpf,fonts,binding,formatexception,C#,Wpf,Fonts,Binding,Formatexception,我正在尝试设置字体系列组合框的选定值,该组合框已填充以下XAML: <ComboBox ItemsSource="{x:Static Fonts.SystemFontFamilies}" Name="cboFont"> <ComboBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel MinWidth="256" />
<ComboBox ItemsSource="{x:Static Fonts.SystemFontFamilies}" Name="cboFont">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel MinWidth="256" />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Margin="2" Text="{Binding}" FontFamily="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我必须将combobox设置为一个字符串,但这会导致格式化异常。有人能告诉我combobox需要什么类,以及如何将字符串(例如“Arial”)转换为那种格式吗?希望我正确理解了您的问题 FontFamily支持构造函数
FontFamily(String familyName);
因此,您应该能够使用类似于newFontFamily(“Arial”)
的方法将字符串转换为FontFamily
您可以将其放在一个实现IValueConverter
的类中,该类在FontFamily和String之间进行转换
要从FontFamily获取字符串,可以访问FamilyNames属性以获取特定于特定区域性的字体名称
然后将FontFamily绑定设置为使用转换器。Alex的回答听起来很好 您也可以尝试DependencyProperty:
public FontFamily FontFamily
{
get { return (FontFamily)GetValue(FontFamilyProperty); }
set { SetValue(FontFamilyProperty, value); }
}
public static DependencyProperty FontFamilyProperty =
DependencyProperty.Register(
"FontFamily",
typeof(FontFamily),
typeof(YourClassVM),
new FrameworkPropertyMetadata(SystemFonts.MessageFontFamily
, FrameworkPropertyMetadataOptions.AffectsRender |
FrameworkPropertyMetadataOptions.AffectsMeasure)
);
然后您只需将组合框的SelectedItem和文本块的文本和FontFamily绑定到“FontFamily”