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

Posted

技术标签:

【中文标题】WPF 应用程序中的 XamlParseException - 但仅在安装在 XP 上时才会出现【英文标题】:XamlParseException in WPF application - but only on when installed on XP 【发布时间】:2011-08-28 02:51:51 【问题描述】:

我的 WPF 应用程序在 Windows 7 上运行良好。在 XP 机器上安装会在启动时出现以下错误:

框架版本:v4.0.30319

描述:这个过程是 由于未处理而终止 例外。

异常信息: System.Windows.Markup.XamlParseException

堆栈:在 System.Windows.Markup.XamlReader.RewrapException(System.Exception, System.Xaml.IXamlLineInfo, System.Uri)

在 System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, 布尔值,System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri)

在 System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader, 布尔值,System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri)

在 System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object,布尔值)

在 System.Windows.Application.LoadComponent(System.Object, System.Uri)

在 MyApplication.App.InitializeComponent()

在 MyApplication.App.Main()

我想我可能遇到了这个问题的答案中描述的问题:

XamlParseException on Windows XP

因为我在一些地方使用 PresentationFramework.Aero。有没有办法解决这个问题,还是我必须删除 Aero?这很痛苦,因为我正在使用一些 ButtonChromes

TIA

【问题讨论】:

我遇到了完全相同的问题,您找到了可以发布问题答案的解决方案吗? 【参考方案1】:

修复:当您在具有自定义英语(美国)区域设置的计算机上运行 WPF 应用程序时,XAML 解析器中会引发异常。

http://support.microsoft.com/kb/968227

【讨论】:

原文链接已烂,看这里:web.archive.org/web/20120623034740/http://support.microsoft.com/…【参考方案2】: 确保任何 UI 的构造函数中都没有抛出异常 组件(例如 .cs 文件的代码隐藏)。 确保在使用 MVVM 时不会在 ViewModel 构造函数中抛出任何异常。

我有一个视图模型抛出了一个与 Xaml 完全无关的异常(与 COM 组件相关 [我现在要对其进行追踪!])。如果创建基于 Xaml 的组件失败,您将收到 XamlParseException - 这可能会产生误导。

【讨论】:

【参考方案3】:

在引用 Aero 的 ResourceDictionary 时,请尝试指定完整的程序集名称,而不是短程序集名称。

<ResourceDictionary Source="/PresentationFramework.Aero, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />

【讨论】:

【参考方案4】:

我在 Windows XP SP3 上遇到了同样的问题,对我来说,通过将 PresentationFramework.Aero 引用的 "Copy Local" 属性设置为 "True" 解决了这个问题>.

【讨论】:

以上是关于WPF 应用程序中的 XamlParseException - 但仅在安装在 XP 上时才会出现的主要内容,如果未能解决你的问题,请参考以下文章

wpf应用程序中的图像拖放

WPF 中的逐像素光照

wpf应用程序中的自定义组合框

2021-11-26 WPF面试题 WPF 中的资源是什么?

Winforms 中的 WPF 事件

如何在 C# 中的 WPF 应用程序中保存图像