【问题标题】:Why are DynamicResources in vsshell:VsBrushes not resolved为什么vsshell中的DynamicResources:VsBrushes没有解决
【发布时间】:2019-05-21 22:21:39
【问题描述】:

我已经制作了一个带有工具窗口的新 Visual Studio 扩展,如 Microsoft 在此处所述 https://docs.microsoft.com/en-us/visualstudio/extensibility/creating-an-extension-with-a-tool-window?view=vs-2019

我没有对 Visual Studio 生成的代码进行任何更改,但我收到了两个警告:

The resource "{x:Static vsshell:VsBrushes.WindowKey}" could not be resolved.    
The resource "{x:Static vsshell:VsBrushes.WindowTextKey}" could not be resolved.    

由于以下屏幕截图中显示的两行。

这里有一个非常相似的问题

VS2010 to VS2012 ToolWindow XAML Reference VsBrushes

除了那个问题引用了 Visual Studio 2012。我使用的是 Visual Studio 2019,所以在此期间可能会有一些变化。

这个问题的答案对我不起作用。

谁能解释这种行为?自动生成的代码应该包含这些警告似乎很奇怪。

【问题讨论】:

    标签: visual-studio visual-studio-extensions visual-studio-2019


    【解决方案1】:

    为什么会出现警告:

    参见Difference between DynamicResource and StaticResource。Tool Window 项使用DynamicResources,因此可以在运行时设置和更改资源。

    WindowsKey 和 WindowsTextKey 来自VsBrushes class,这两个颜色资源不能在设计器时访问,而是可以在运行时访问。这就是为什么 Tool Window 控件在安装 .vsix 后运行良好的原因,而 vs 显示两个警告。

    另外:

    如果我们将 DynamicResource 更改为 StaticResource,警告将变为错误。模板中的默认值vsshell:VsBrushes.WindowKey只能在运行时访问,所以开发团队默认设置了DynamicResource。

    我认为这是设计使然,警告实际上可以看作是一条消息:Possible notFoundResource, please take care! 所以我们可以忽略它。

    要删除警告:

    正如我所说,这只是一条消息,告诉我们有可能无法解析资源,因为设计师无法在“设计师时间”访问资源 vsshell:VsBrushes.WindowKey。为什么不将颜色设置为我们在设计控件时可以访问的系统颜色。

    其实我们是在开发一个Window COntrol,当然我们可以改变控件的颜色让它变得更好。(UI设计?)所以对我来说,我把这两个资源改成可以在设计器中访问的SystemResource——然后警告消失的时间:

    Background="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"
    Foreground="{DynamicResource {x:Static SystemColors.MenuBarBrushKey}}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      相关资源
      最近更新 更多