我正在处理的应用程序有一个桌面版本和一个Visual Studio扩展版本,两者大致提供相同的功能,因此重用相同的WPF控件集。这些控件驻留在WPF控件库中。一切都按预期工作。
最近我发现如果我将Visual Studio切换到黑暗主题,扩展名看起来不是很好。我用Google搜索的解决方案是使用Visual Studio的内置画笔和颜色。
我该怎么做?我的控件具有深层嵌套的样式和颜色。如果我在VS扩展中创建其他样式,WPF仍将应用控件内定义的本地笔刷和值。如何解决这个问题?
答案 0 :(得分:0)
您可以使用Visual Studio的画笔和颜色,如下所示:
<UserControl ...
xmlns:vsShell="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.14.0">
<TextBox Foreground="{DynamicResource {x:Static vsShell:EnvironmentColors.ToolWindowTextBrushKey}}" />
您还可以使用ThemeResourceKey检查哪个VS主题处于活动状态,该主题在所有VS主题中具有不同的颜色(例如AccentBorderColorKey
),并检查返回的颜色。
var color = VSColorTheme.GetThemedColor(EnvironmentColors.AccentBorderColorKey);
并为WPF控件分配自己的颜色(更好看)。
文档:
其他:
这可能有助于选择正确的ThemeResourceKey