2

每当我向 Microsoft.Phone 命名空间(Pivot、Panorama 等)中的 Windows Phone 8 应用程序添加任何控件时,XAML 设计器都会抛出:

对 COM 组件的调用已返回错误 HRESULT E_FAIL。

堆栈跟踪似乎有所不同,这是在文档大纲中选择全景后的跟踪:

at Microsoft.Phone.Controls.Design.PanoramaItemAdorner.Activate(ModelItem item)
   at Microsoft.Windows.Design.Interaction.AdornerProvider.InvokeActivate(EditingContext context, ModelItem item)
   at MS.Internal.Features.AdornerProviderFeatureConnector.FeatureProvidersAdded(ModelItem item, IEnumerable`1 extensions)
   at Microsoft.Windows.Design.Policies.PolicyDrivenFeatureConnector`1.OnPolicyItemsChanged(Object sender, PolicyItemsChangedEventArgs e)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Microsoft.Windows.Design.Policies.ItemPolicy.OnPolicyItemsChanged(PolicyItemsChangedEventArgs e)
   at Microsoft.Windows.Design.Policies.SelectionPolicy.OnSelectionChanged(Selection newSelection)
   at Microsoft.Windows.Design.ContextItemManager.SubscribeProxy`1.SubscribeContext(ContextItem item)
   at Microsoft.Windows.Design.SubscribeContextCallback.Invoke(ContextItem item)
   at Microsoft.Windows.Design.EditingContext.DefaultContextItemManager.OnItemChanged(ContextItem item)
   at Microsoft.Windows.Design.EditingContext.DefaultContextItemManager.SetValue(ContextItem value)
   at Microsoft.Expression.DesignSurface.ViewModel.Extensibility.ExtensibilityManager.SetSelection(Selection selection)
   at Microsoft.Expression.DesignSurface.ViewModel.Extensibility.ExtensibilityManager.OnViewModelEarlySceneUpdatePhase(Object sender, SceneUpdatePhaseEventArgs args)
   at Microsoft.Expression.DesignSurface.ViewModel.SceneUpdatePhaseEventHandler.Invoke(Object sender, SceneUpdatePhaseEventArgs args)
   at Microsoft.Expression.DesignSurface.ViewModel.SceneViewModel.FireEarlySceneUpdatePhase(SceneUpdatePhaseEventArgs args)
   at Microsoft.Expression.DesignSurface.Pipeline.SceneViewUpdateScheduleTask.UpdateEarly()
   at Microsoft.Expression.Utility.Scheduler.ScheduleTask.Update()
   at Microsoft.Expression.Utility.Scheduler.SchedulingService.DispatchTasksAtPriority(DispatcherPriority priority)
   at Microsoft.Expression.Utility.Scheduler.SchedulingService.DispatcherToken.Dispatch(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

如果文件与控件一起加载,则堆栈跟踪如下所示:

at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
   at MS.Internal.XcpImports.Collection_InsertValue[T](PresentationFrameworkCollection`1 collection, UInt32 index, CValue value)
   at MS.Internal.XcpImports.Collection_InsertDependencyObject[T](PresentationFrameworkCollection`1 collection, UInt32 index, DependencyObject value)
   at System.Windows.PresentationFrameworkCollection`1.InsertDependencyObject(Int32 index, DependencyObject value)
   at System.Windows.Controls.UIElementCollection.InsertInternal(Int32 index, UIElement value

相同的 .xaml 文件在 Blend 中工作得很好,一旦删除控件,设计器就会重新开始工作。

我尝试卸载/修复 Windows Phone 8 SDK、Visual Studio 以及 Silverlight SDK 和运行时。

还有其他想法吗?

4

3 回答 3

3

我遇到了同样的问题,并尝试了许多论坛上讨论的每个答案。

最后,我删除了我的“解决方案”文件 (.sln),而不是项目,然后将我的所有项目重新添加到我的新解决方案中。

使用:VisualStudio Express 2012

脚步:

  • 在 WindowsExplorer 中删除您的项目所在的解决方案 (.sln) 文件。
  • 在 VisualStudio 中打开主项目文件 (.csproj)。
  • 然后将所有其他“现有项目”添加回您的新解决方案。

现在效果很好......希望对您有所帮助。

于 2013-01-10T17:21:24.603 回答
0

当我添加参考 System.Windows.Controls.DataVisualization.Toolkit 时我遇到了同样的问题,我得到了这个错误。之后,我从路径中添加了参考 System.Windows.Controls.Toolkit:C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Libraries\Client 或 C:\Program Files(x86)\Microsoft SDKs\Silverlight\ v3.0\Libraries\Client 和 VS 工作正常。也许它会帮助你。

于 2013-11-15T06:02:08.740 回答
0

两个想法也许相关也许不相关……

  1. 检查正在使用的任何模板,也许设计师找不到它们并抛出该错误。如果模板在共享字典中,请尝试将它们移回页面/控件上的控件定义。
  2. 查看您在 Xaml 中使用的任何转换器代码。由于设计时模式不处理正确的数据,您的转换器是否通过返回设计人员可以处理的有效数据来处理空情况或错误数据情况?例如 string.empty 与要转换的原始对象。换句话说,它是否正确处理了设计时模式所处的负面情况?
于 2013-04-12T15:26:20.233 回答