我有一个WPF应用程序在vista / 7上运行得很好但是在Windows XP上它丢失了System.Windows.Markup.XamlParse错误,这非常令人沮丧,因为我的应用程序中有很多控件我不知道造成这个问题的原因。
有人可以在这里发光吗?
答案 0 :(得分:1)
这通常是由您使用PresentationFramework.Aero程序集中的某个控件模板引起的。如果您使用Blend中的“编辑副本”修改模板,则会发生这种情况。这将为正在运行Blend的系统主题生成当前活动模板的XAML副本。在Vista或Win7的情况下,默认情况下是Aero(Classic for XP)。许多默认Aero模板都包含特定于Aero主题并在Aero程序集中声明的自定义元素(ButtonChrome等)。在XP上运行时,Aero程序集通常不可用,因此您在运行时会丢失XAML中的引用。
对“PresentationFramework.Aero”的整个解决方案进行文本搜索,你应该找到一些使用它的xmlns声明。
答案 1 :(得分:1)
在我的情况下,我必须更改图像元素的来源。它有 ico 文件,但XP不能将它作为此类元素的来源。
<Image Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Width="48" Height="48" VerticalAlignment="Center"
Source="Resources/Images/favicon.ico" />
我必须将其更改为并制作特定的PNG文件
<Image Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Width="48" Height="48" VerticalAlignment="Center"
Source="Resources/Images/favicon-256.png" />
我的错误是:
Exception: Provide value on 'System.Windows.Baml2006.TypeConverterMarkupExtension' threw an exception. PresentationFramework at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)