2

我有一个 WPF 应用程序,它在 vista/7 上运行得非常好,但在 Windows XP 上它会抛出 System.Windows.Markup.XamlParse 错误,这非常令人沮丧,因为我的应用程序中有很多控件,而我没有'不知道是什么导致了问题。

任何人都可以在这里发光吗?

4

2 回答 2

1

这通常是由您的某个控件模板使用 PresentationFramework.Aero 程序集中的内容引起的。如果您在 Blend 中使用“编辑副本”来修改模板,就会发生这种情况。这将为运行 Blend 的系统主题生成当前活动模板的 XAML 副本。对于 Vista 或 Win7,默认情况下为 Aero(XP 为经典)。许多默认 Aero 模板包含特定于 Aero 主题并在 Aero 程序集中声明的自定义元素(ButtonChrome 等)。在 XP 上运行时,Aero 程序集通常不可用,因此您在运行时会在 XAML 中丢失引用。

对“PresentationFramework.Aero”的整个解决方案进行文本搜索,您应该会找到一些使用它的 xmlns 声明。

于 2010-03-20T16:05:12.633 回答
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)
于 2013-10-14T14:55:21.213 回答