XamlParseException в Windows XP

У меня есть приложение WPF, которое прекрасно работает на vista/7, но в Windows XP оно исправляет ошибку System.Windows.Markup.XamlParse, и это довольно неприятно, потому что у меня чертовски много элементов управления в моем приложении, и я не не знаю, что является причиной проблемы.

Кто-нибудь может пролить свет здесь?

2 ответа

Решение

В моем случае мне пришлось изменить элемент Source of Image. У него есть файл 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)

Это часто вызвано тем, что один из ваших шаблонов элементов управления использует что-то из сборки PresentationFramework.Aero. Это может произойти, если вы измените шаблоны с помощью "Редактировать копию" в Blend. Это создаст копию XAML текущего активного шаблона для системной темы, под которой работает Blend. В случае Vista или Win7 это Aero по умолчанию (Classic для XP). Многие из стандартных шаблонов Aero содержат пользовательские элементы (ButtonChrome и т. Д.), Характерные для темы Aero и объявленные в сборке Aero. При работе в XP сборка Aero обычно недоступна, поэтому во время выполнения вы получаете недостающие ссылки в своем XAML.

Выполните текстовый поиск по всему решению для "PresentationFramework.Aero", и вы должны найти некоторые объявления xmlns, использующие его.

Другие вопросы по тегам