资源"x"无法解析.

Chr*_*yks 8 wpf xaml visual-studio-2012

我最近升级到VS 2012,因为我需要开始使用.net 4.5,但这不仅仅是重点.我的问题如下:

ResourceDictionary在我的主要项目中有一个叫做AppStyles.xaml,并且App.Xaml我有以下内容:

<ResourceDictionary>
  <ResourceDictionary.MergedDictionaries>
     <ResourceDictionary Source="AppStyles.xaml"/>
  <ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

在我ResourceDictionary有一个样式,然后我可以通过设置将此样式应用于我的任何项目中的任何按钮Style={StaticResource MyButton}.

升级到VS 2012之后,我注意到我在标题中出现了很多错误,有时它会阻止我进行调试,有时却没有!

有没有不同的方式我应该这样做或VS 2012中有问题?

Won*_*onk 12

WPF无法解析您尝试合并的资源字典.创建合并字典时,WPF遵循一组规则来尝试解析URI.在您的情况下,URI是不明确的,因此WPF无法可靠地解析它.

SourceURI 更改为App.xaml绝对包URI.例如,如果调用了项目MyProject(即:"MyProject"是短组件名称),那么您应该将Sourcein 更改App.xaml为:

   <ResourceDictionary 
      Source="/MyProject;component/AppStyles.xaml"/>
Run Code Online (Sandbox Code Playgroud)

这假定AppStyles.xaml是在根的MyProject.您可以选择指定签名程序集的权限,程序集版本和公钥信息.但是,使用短组件名称(在上面的示例中为MyProject)应该是安全的.

有关WPF中包URI的更多详细信息,请参阅MSDN上的此页面:http://msdn.microsoft.com/en-us/library/aa970069(v = vs.110).aspx


hij*_*ack 6

我在VS2010中也经常遇到这个问题.如果我制作"清洁解决方案"和"重建解决方案",有时问题就会解决.如果这不起作用我通常重启VS2010.

我还将Style x:Key重命名为其他东西,问题就消失了.但我发现这个解决方案并不完美......

<Application.Resources>
<ResourceDictionary>
  <ResourceDictionary.MergedDictionaries>

    <!-- Load Infrastructure's Resource Dictionaries -->
    <ResourceDictionary Source="/MyProject.Modules.Infrastructure;component/ResourceDictionaries/ResourceLibrary.xaml" />

  </ResourceDictionary.MergedDictionaries>

  <!-- Workaround for ResourceDictionary loading bug/optimization -->
  <Style TargetType="{x:Type Rectangle}" />

</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

在我的代码示例中引用有关此变通方法的问题:引用包含合并字典的资源字典时出现问题