WPF程序在XP系统运行出错:system.windows.media.fontfamily类型初始值设定项引发异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF程序在XP系统运行出错:system.windows.media.fontfamily类型初始值设定项引发异常相关的知识,希望对你有一定的参考价值。

出现了TypeInitializationExeption和题目中的这个异常。
XP系统是sp3,而且已经装了.NET 3.5和4.0,而且都是微软官方原版的。wpf程序如果没有添加任何有文字显示的控件的时候是可以运行的,但是一旦添加了可以有文字显示的控件(也就是控件的属性有FontFamily时),就会在初始化的InitializeComponent()这一步里面出错。提示错误信息为“system.windows.media.fontfamily 的类型初始值设定项引发异常“。
而且生成的程序目标框架为.NET 3.5和4.0都试过了;
我也试过发布出来再安装在XP上(程序必须项也都包含在发布包里了);
生成目标平台为Any Cpu和X86等都试过;
都不行。
PS:程序在WIN7下能正常运行。

不太清楚你这个异常是怎么引起的,可能是XP中缺少字体的原因吧。
1. 你可以把缺少的字体,安装到XP上,不过看你意思似乎不行。
2. 动态加载字体,即把字体打包到你的程序中,这样不管对方电脑有没有这种字体,都可以跑你的程序了。示例:
在你项目的resources目录中加入Pericles Light字体
myTextBlock.FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "./resources/#Pericles Light");
当然你也可以在XAML中动态加载字体。

更详细的说明见MSDN:http://msdn.microsoft.com/zh-cn/library/ms653301%28v=vs.100%29.aspx追问

还是没能成功,而且装VS2010能成功装上,但是每次打开都会报错“调用目标异常”然後就退出了。

参考技术A XP里没有“微软雅黑”的字体库。建议你从WIN7考个安装到XP就可以了。实在麻烦的话。建议你把这个字体库直接引用。把库文件加到你的程序目录下。运行时默认加载这个字体追问

我之前也试过把这种字体拷到font目录下了也不行,你说的“建议你把这个字体库直接引用。把库文件加到你的程序目录下。运行时默认加载这个字体”是什麽意思?添加到资源文件?我试了把这个字体添加为资源而且把字体的生成操作选为“编译”,再生成之後还是捕获到了这个异常。

追答

你是点击安装还单单的复制。有没有试过在记事本里也能正常使用这个字体。如果不能就说明你没正确安装。建义你了解一下System.Drawing.Text.PrivateFontCollection这个类的使用就明白我讲什么了

追问

我按照标准步骤安装时提示已经安装了这种字体,说明直接复制字体还是可以装上的,而且记事本里也有了这种字体,但是还是不行

wpf 能不能在winxp运行

参考技术A WPF可以运行在三种环境下面,如下:
1、 WPF桌面程序,此类型没有任何限制,可以是Windows可执行程序也可以是DLL动态链接库。
只需要.Net Framework 3.0以上版本支持即可!
2、 RIA分布式环境,服务器与客户端浏览器下载使用ActiveX插件方式解释执行的。微软更名为Silverlight,由于安全原因,微软提取精简版.Net Framework到Silverlight中独立运行,精简了很多类库。
3、浏览器承载的应用程序(称为 XAML 浏览器应用程序 (XBAP)),您可以创建能够使用超链接(Hyperlink 类)导航的页面 (Page) 和页函数 (PageFunction(Of (T)))。[2]
只要你的是.Net Framework 3.0以上就可以了。本回答被提问者采纳

以上是关于WPF程序在XP系统运行出错:system.windows.media.fontfamily类型初始值设定项引发异常的主要内容,如果未能解决你的问题,请参考以下文章

VS2012编译的MFC程序XP运行出错R6010

用C#写的WPF在XP系统目标机上运行时闪退。

运行 WPF 应用程序时出错

XP系统下WPF程序字体大小不一的问题

blend做的wpf程序有问题

WPF 应用程序中的 XamlParseException - 但仅在安装在 XP 上时才会出现