我正在尝试在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()}
我该如何调试?我怎么知道位置47所在的文件行1739是什么?
答案 0 :(得分:7)
可能有点像臭虫找到。基本上尝试从调试器中收集尽可能多的细节。
XamlParseException
。在我写完之后,我意识到控件的构造函数确实在callstack上,它是SpellCheckerSample
。很可能是该控件的.XAML页面。如果您可以访问源代码,则文件名很可能类似于 SpellCheckerSample.xaml 。
错误本身非常简单,看起来在同一个ResourceDictionary中使用相同的键定义了多个内容。以下代码将导致这种情况发生:
<Window.Resources>
<myConverters:BananaToCarrotConverter x:Key="StupidestConverterEver" />
<myConverters:BananaToAppleConverter x:Key="StupidestConverterEver" />
<Window.Resources>
答案 1 :(得分:2)
原来我的具体问题是ComponentOne组件只能在Silverlight 4下工作。一旦我改为目标SL4,它就全部工作了。
答案 2 :(得分:0)
检查你得到的ResourceDictionary引用 - 问题通常是其中一个得到了一个需要修复的错误。
如果您的异常是由App引起的,那么它可能是您在那里合并的目录之一,否则是相关控件。
同时检查您是否缺少样式的资源目录使用情况(如果您收到ReSharper,则会有帮助,因为您会在XAML设计时收到警告)。
答案 3 :(得分:0)
InnerException
和LineNumber
属性)答案 4 :(得分:-1)
尝试运行应用时,您应该会在.cs文件中看到错误。 并且具有给定行号和列的此.cs文件的相应.xaml文件是正确的。