Как Вы отлаживаете XamlParseException?

Я пытаюсь использовать сторонний компонент в своем приложении Silverlight и когда я пытаюсь создать экземпляр управления, я получаю XamlParseException:

{System.Windows.Markup.XamlParseException: **Set property 'System.Windows.FrameworkElement.Style' threw an exception.** [Line: 0 Position: 0] 
---> System.Windows.Markup.XamlParseException: **Elements in the same ResourceDictionary cannot have the same x:Key** [Line: 1739 Position: 47]    
at MS.Internal.XcpImports.CreateFromXaml(UnmanagedMemoryStream stream, String sourceAssemblyName, boolean createNamescope, Boolean requireDefaultNamespace, Boolean allowEventHandlers)    
at System.Windows.Controls.Control.GetBuiltInStyle(IntPtr nativeTarget, IntPtr& nativeStyle)    
--- End of inner exception stack trace ---    
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)    
at SpellCheckerSample.StandardSpellDialog.InitializeComponent()    
at SpellCheckerSample.StandardSpellDialog..ctor()}

Как я могу отладить это? Как я знаю, в какой строке файла 1739, Положение 47 находится?

14
задан Michal Sznajder 29 October 2013 в 15:27
поделиться

2 ответа

Оказывается, моя конкретная проблема заключалась в том, что компонент ComponentOne работает только в Silverlight 4. Как только я переключился на целевой SL4, все заработало.

2
ответ дан 1 December 2019 в 16:15
поделиться

Может быть, нелегко найти. В основном старайтесь собрать как можно больше деталей от отладчика.

  1. Настройте отладчик на прерывание XamlParseException .
  2. Посмотрите на стек вызовов. Вполне возможно, что конструктор нарушающего элемента управления находится в стеке вызовов.
  3. В режиме паузы перейдите в окно отладки локальных переменных, чтобы узнать, раскрывают ли какие-либо параметры функции больше о том, какой это компонент.
  4. Если нет, дважды щелкните следующую запись в стеке и перейдите к шагу 3.
  5. Повторите шаги 3 и 4.

После того, как я написал это, я понял, что конструктор элемента управления действительно находится в стеке вызовов, и это SpellCheckerSample . Скорее всего, это страница .XAML для этого элемента управления. Если вы можете получить доступ к источнику, имя файла, скорее всего, будет примерно таким, как SpellCheckerSample.xaml .

Сама ошибка довольно проста, похоже, что несколько вещей определены с одним и тем же ключом в одном и том же ResourceDictionary. Приведенный ниже код вызовет это:

<Window.Resources>
  <myConverters:BananaToCarrotConverter x:Key="StupidestConverterEver" />
  <myConverters:BananaToAppleConverter x:Key="StupidestConverterEver" />
<Window.Resources>
7
ответ дан 1 December 2019 в 16:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: