我用工具窗口制作了一个新的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 Studio2012。我正在使用Visual Studio 2019,因此在此期间可能有所更改。
该问题的答案对我不起作用。
有人可以解释这种行为吗?自动生成的代码应该包含这些警告似乎很奇怪。
答案 0 :(得分:1)
为什么会发生警告:
请参见Difference between DynamicResource and StaticResource。“工具窗口”项使用DynamicResources,因此可以在运行时设置和更改资源。
WindowsKey和WindowsTextKey来自VsBrushes class,这两种颜色资源不能在设计时访问,而是可以在运行时访问。这就是为什么在安装.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}}"