Ответ 1
Оказывается, моя конкретная проблема заключалась в том, что компонент ComponentOne работает только под Silverlight 4. После того, как я перешел на целевой SL4, все это сработало.
Я пытаюсь использовать сторонний компонент в моем приложении 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?
Оказывается, моя конкретная проблема заключалась в том, что компонент ComponentOne работает только под Silverlight 4. После того, как я перешел на целевой SL4, все это сработало.
Может быть, немного искатель, которого можно найти. В основном попытайтесь собрать как можно больше деталей из отладчика.
XamlParseException
.После того, как я написал это, я понял, что конструктор управления действительно находится в callstack, и это SpellCheckerSample
. Скорее всего это страница .XAML для этого элемента управления. Если вы можете получить доступ к источнику, имя файла, скорее всего, похоже на SpellCheckerSample.xaml.
Ошибка сама по себе довольно прямолинейна, похоже, что в одном и том же ResourceDictionary есть несколько вещей, определенных одним и тем же ключом. Код ниже приведет к тому, что это произойдет:
<Window.Resources>
<myConverters:BananaToCarrotConverter x:Key="StupidestConverterEver" />
<myConverters:BananaToAppleConverter x:Key="StupidestConverterEver" />
<Window.Resources>
Проверьте, какие ссылки ResourceDictionary вы получили - обычно это означает, что один из них получил ошибку, которая должна быть исправлена.
Если ваше исключение является причиной из App, вероятно, это один из ваших объединенных dirs, иначе это элемент управления.
Также проверьте, что вы не пропускаете использование ресурса dir для стилей (помогает, если вы получили ReSharper, так как вы получите предупреждение во время разработки XAML).
InnerException
и LineNumber
)При попытке запустить приложение вы должны увидеть ошибку в файле .cs. И соответствующий .xaml файл для этого файла .cs с заданным номером строки и столбцом является правильным.