Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF FontFamily格式问题_C#_Wpf_Fonts_Binding_Formatexception - Fatal编程技术网

C# WPF FontFamily格式问题

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

我正在尝试设置字体系列组合框的选定值,该组合框已填充以下XAML:

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