Как мне сопоставить тему Visual Studio при создании окна инструмента VSIX? - PullRequest
0 голосов
/ 05 июля 2018

Я создаю расширение для Visual Studio (2012+), которое включает в себя окно инструментов. Я надеялся идентифицировать стиль окна одинаково, чтобы соответствовать текущей теме Visual Studio. Тем не менее, я испытываю большие затруднения, выясняя, как это сделать.

В этом посте предполагается, что все, что требуется, - это вообще не применять стиль, но это пока не соответствует моему опыту (даже при создании проекта VSIX по умолчанию в VS2017 и добавлении окна инструментов отображается кнопка я бы сказал, что это стандартный WPF в теме, а не VS-тема, по крайней мере при использовании темной VS-темы в VS2017).

В этом посте был задан похожий вопрос, и в то время казалось, что решение заключается в создании аналогичных элементов управления с использованием бесплатного инструментария. Однако это было для VS2012 и 6 лет назад, и я надеюсь, что решение станет более доступным в наши дни. Путь по этому маршруту не кажется надежным в будущем.

Другое решение заключается в применении VsBrushes и VsColors в Visual Studio к элементам управления WPF. Это, вероятно, поможет мне найти решение, но стили - это больше, чем цвета, так что это не кажется удовлетворительным.

Есть ли способ применить базовые стили элементов управления Visual Studio (кнопка, текстовое поле, просмотр списка, дерево и т. Д.) К моему окну инструментов VSIX, чтобы он выглядел как дома в Visual Studio?

Спасибо за любые предложения!

Ответы [ 2 ]

0 голосов
/ 09 июля 2018

Мне кажется, что правильный ответ на этот вопрос таков: вы не должны этого делать / Microsoft не хочет, чтобы вы это делали. В этом посте изложены причины этого. Похоже, что TLDR поста состоит в том, что MS не хочет, чтобы сторонние окна выглядели как официальные окна VS, потому что это может вызвать замешательство у пользователей. Я думаю, это достаточно справедливо, но обратная сторона этого заключается в том, что VS выглядит довольно некрасиво с окнами с различными тематическими / стилизованными стилями.

Если - как и я - вы все еще хотите надевать и стилизовать свои окна как VS, лучше всего выбрать пост @ Leo выше и использовать EnvironmentColors. Вы не получите стили, но по крайней мере можете приблизиться к цветам. Это хороший блог , в котором подробно рассказывается об этом.

Я приму ответ Лео на том основании, что это лучшее из доступных решений.

0 голосов
/ 09 июля 2018

Как мне сопоставить тему Visual Studio при создании окна инструмента VSIX?

Вы можете попробовать привязку к статическим ресурсам 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>

Подробнее см. Класс EnvironmentColors .

Примечание: чтобы получить точно такую ​​же тему, вам нужно использовать именно тот XAML, который использует VS. Спасибо @ GrantTheAnt.

...