Visual studio 2015 Vsix对主题变化的适应性

Visual studio 2015 Vsix对主题变化的适应性,visual-studio-2015,themes,vsix,Visual Studio 2015,Themes,Vsix,我正在从事一个VSIX项目,在这个项目中,我试图使扩展对所有类型的主题做出响应,无论是浅、深、蓝,用户选择哪个。控件和文本在特定主题上变得不可读。我尝试在UserControl中使用资源字典中的主题词典。资源,但我的控件不适应所选主题。有人能告诉我在VSIX项目中使用主题词典的正确方法吗以下是我尝试过的代码: <UserControl.Resources> <ResourceDictionary> <ResourceDictionary.ThemeDicti

我正在从事一个VSIX项目,在这个项目中,我试图使扩展对所有类型的主题做出响应,无论是浅、深、蓝,用户选择哪个。控件和文本在特定主题上变得不可读。我尝试在UserControl中使用资源字典中的主题词典。资源,但我的控件不适应所选主题。有人能告诉我在VSIX项目中使用主题词典的正确方法吗以下是我尝试过的代码:

<UserControl.Resources>
<ResourceDictionary>
    <ResourceDictionary.ThemeDictionaries>
                <ResourceDictionary x:Key="Light">
                    <SolidColorBrush x:Key="myBrush" Color="{StaticResource SystemBaseHighColor}"/>
                </ResourceDictionary>
                <ResourceDictionary x:Key="Dark">
                    <SolidColorBrush x:Key="myBrush" Color="{StaticResource SystemBaseHighColor}"/>
                </ResourceDictionary>
                <ResourceDictionary x:Key="HighContrast">
                    <SolidColorBrush x:Key="myBrush" Color="{ThemeResource SystemColorButtonFaceColor}"/>
                </ResourceDictionary>
            </ResourceDictionary.ThemeDictionaries>
        </ResourceDictionary>
 </UserControl.Resources>

设置Visual Studio扩展主题的最佳方法是使用为每个in-box VS主题创建自己的颜色键集,或者选择预先存在的VS颜色键导出以在扩展中使用

设计好主题后,可以使用File>另存为PKGDEF文件,并分别创建包含主题资源的PKGDEF文件和用于访问这些资源的代码文件

然后,将这两个文件都添加到您的。将代码文件添加为C源代码,并通过更改PKGDEF的设置将PKGDEF文件设置为与VSIX一起安装

然后,在XAML中,您可以通过使用XAML绑定这些颜色键来使用这些颜色键,类似于:

<Setter Property="Background" Value="{DynamicResource {x:Static uicolors:VSColors.PopupBackgroundTextBrushKey}}" />
PopupBackgroundTextBrushKey是由VSIX颜色编辑器生成的C属性:

public static ThemeResourceKey PopupBackgroundTextColorKey { get { return _PopupBackgroundTextColorKey ?? (_PopupBackgroundTextColorKey = new ThemeResourceKey(Category, "PopupBackground", ThemeResourceKeyType.ForegroundColor)); } }
Visual Studio的主题化系统足够智能,可以根据当前主题从PKGDEF返回正确的颜色资源,并将实时更新任何可见的UI

主题的完整示例可以在我的hacky中找到,但尚未完成。不要评判代码质量,这相当糟糕:

如果出于任何原因发现无法加载颜色,请检查软件包的安装目录,通常位于%localappdata%\Microsoft\VisualStudio\15.*\Extensions。。然后,对于PKGDEF,从开发人员命令提示符运行以下命令:

devenv.exe /updateconfiguration
VSIX颜色编辑器随VS扩展性工作负载一起安装,它位于: C:\Program Files x86\Microsoft Visual Studio\2017\Community\VSSDK\VisualStudioIntegration\Tools\Bin\VsixColorEditor.exe

请参见
devenv.exe /updateconfiguration