【问题标题】:WPF Dynamic Resource: Warning Message - "The resource 'resource' could not be resolved."WPF 动态资源:警告消息 - “无法解析资源‘资源’。”
【发布时间】:2011-03-31 20:13:30
【问题描述】:

基本上,我有一个使用 DynamicResources 的 UserControl。应用程序使用该资源编译并运行良好,但看到此警告消息有点烦人。这让我怀疑我是否做对了,这只是一个误报,或者我做错了,并且碰巧从裂缝中溜走了。

<Grid Background="{DynamicResource AppDefaultBackgroundColor}">
...
</Grid>

那么,如果我正确使用它,我怎样才能摆脱这个警告信息呢?
如果我没有适当地使用它,它应该是什么样子才不会收到警告?

附:我的应用程序运行良好,但我希望在编译时不要出现任何编译警告。

【问题讨论】:

  • 从哪里加载资源?您可能只需要更改项目的编译顺序。
  • 如果您使用的是设计师:扔掉它,摆脱 90% 的所有错误警告和错误。 (注意:这个数字是虚构的,可能不完全准确)
  • 我也在使用 VS 2010,但我不使用它的设计器。 (右键单击 XAML 文件 -> 打开方式... -> 源代码(文本)编辑器 -> 设置为默认值 -> 确定)我从来没有真正收到过这样的警告,而且人们已经说过好几次了当我提供设计师无法处理的解决方案时,我在这里不知道的警告。
  • 为什么它是动态资源?如果资源在您的 App.xaml 中并且用户控件在同一个程序集中;为什么不让它成为一个静态资源!
  • 根据评论here“动态资源在加载期间将表达式对象分配给属性,但直到运行时要求表达式对象提供值时才真正查找资源。这推迟了查找资源,直到在运行时需要它。” 所以忽略 IDE 警告。如果在运行时正确解析,它将消失!*

标签: wpf xaml compiler-warnings suppress-warnings dynamicresource


【解决方案1】:

你可以像这样映射你的资源

<Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="..\Resources\Theme.xaml" />
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Resources>

Theme.xaml 必须包含 'AppDefaultBackgroundColor' 像这样

 <Color x:Key="AppDefaultBackgroundColor">#FF77C6FB</Color>

【讨论】:

  • 我猜**Source 是因为试图在代码块中显示粗体文本?只是想知道,因为它不喜欢设计器中的那种语法。
猜你喜欢
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 2017-07-29
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 2019-03-06
相关资源
最近更新 更多