Gra*_*Ant 5 wpf xaml vs-extensibility vsix visual-studio-extensions
我正在为Visual Studio(2012+)创建一个涉及工具窗口的扩展。我希望为窗口设置相同的样式以匹配Visual Studio的当前主题。但是,我在解决该问题上遇到了很多麻烦。
这篇文章建议根本不应用任何样式,但这与我到目前为止的经验不符(即使在VS2017中创建默认的VSIX项目并添加工具窗口也显示了一个我认为是主题中标准WPF的按钮)而不是VS主题,至少在VS2017中使用深色VS主题时)。
这篇文章提出了类似的问题,当时的解决方案似乎是使用免费工具包创建类似的控件。但是,那是针对VS2012和6年前的,我希望现在有更多可用的解决方案。采取这条路线似乎不是很未来的证明。
另一个解决方案是将Visual Studio的VsBrushes和VsColors应用于WPF控件。这可能使我找到了解决方案的某种方式-但样式不只是颜色,因此似乎不太令人满意。
有没有一种方法可以将Visual Studio的基本控件样式(按钮,文本框,列表视图,树视图等)应用于我的VSIX工具窗口,以使其在Visual Studio中看起来像在家里一样?
感谢您的任何建议!
小智 6
我知道这是一个老问题,但我决定扩展答案。突然间它会对某人有用。
除了颜色分配之外,您还可以为标准组件(按钮、组合框等)分配样式。所有样式都在VsResourceKeys类中。
例如:
<Button Style="{DynamicResource {x:Static vsshell:VsResourceKeys.ButtonStyleKey}}" />
Run Code Online (Sandbox Code Playgroud)
此外,您还可以在一张图片中看到不同配色方案(深色、浅色、蓝色)的所有颜色。
创建 VSIX 工具窗口时如何匹配 Visual Studio 的主题?
您可以尝试绑定到静态 VS 资源:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vs_shell="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.11.0">
<Style TargetType="Label">
<Setter Property="Foreground" Value="{DynamicResource {x:Static vs_shell:EnvironmentColors.ToolWindowTextBrushKey}}"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="Foreground" Value="{DynamicResource {x:Static vs_shell:EnvironmentColors.ToolWindowTextBrushKey}}"/>
<Setter Property="Background" Value="{DynamicResource {x:Static vs_shell:EnvironmentColors.ToolWindowBackgroundBrushKey}}"/>
</Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅EnvironmentColors 类。
注意:要获得完全相同的主题,您需要使用 VS 使用的完全相同的 XAML。谢谢@GrantTheAnt。
作为对此的另一个跟进,在编写我的 Visual Studio 扩展时,我真的想让我的工具窗口看起来尽可能像 Visual Studio 窗口。有时,我发现很难找到正确的 EnvironmentColors 值。至少,正确的颜色值应该适用于默认/提供的 Visual Studio 主题。所以,很沮丧,我写了一个小应用程序来帮助我找出正确的值,我已经在http://niahtextfilter.com/environmentcolorsfinder/ 上提供了它. 要使用它,请指定所需的 RGB 颜色值,应用程序将显示最可能的 EnvironmentColors 候选对象。为了获得最准确的候选者,您可以为每个主题提供您想要显示的颜色(深色、常规、蓝色)——如果您在每个主题中截取示例 Visual Studio UI 元素的屏幕截图,并且颜色下降,这很容易实现你需要的像素。
它帮助我将我的工具窗口与 Visual Studio 相当好地匹配:
我希望它也能帮助其他人!
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |