XamlParseException in WPF application - but only o

2019-02-22 03:04发布

问题:

My WPF application is running fine on Windows 7. Installation on XP machine brings up the following error on startup:

Framework Version: v4.0.30319

Description: The process was terminated due to an unhandled exception.

Exception Info: System.Windows.Markup.XamlParseException

Stack: at System.Windows.Markup.XamlReader.RewrapException(System.Exception, System.Xaml.IXamlLineInfo, System.Uri)

at System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri)

at System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader, Boolean, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri)

at System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, Boolean)

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

at MyApplication.App.InitializeComponent()

at MyApplication.App.Main()

I think I may be experiencing the problem described in the answer to this question:

XamlParseException on Windows XP

as I am using PresentationFramework.Aero in places. Is there a way to fix this or will I have to remove Aero? This is a pain as I am using some ButtonChromes

TIA

回答1:

I had the same problem on Windows XP SP3 and for me the problem was solved by setting the "Copy Local" property of the PresentationFramework.Aero reference to "True".



回答2:

When referring to the ResourceDictionary for Aero, try specifying the full assembly name, not the short assembly name.

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


回答3:

  • Make sure there are no exceptions being thrown in the constructors for any of the UI components (such as codebehind for .cs files).
  • Make sure if you're using MVVM that you're not throwing any exceptions in the ViewModel constructor.

I had a view model throwing an exception (related to a COM component [which I'm now going to go track down!]) that had NOTHING to do with Xaml at all. You'll get a XamlParseException if the creation of a Xaml based component fails - and it can be misleading.



回答4:

FIX: An exception in the XAML parser is thrown when you run a WPF application on a computer that has customized English (United States) regional settings.

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