Где я могу получить темы для элементов управления WPF, которые напоминают интерфейс Visual Studio 2010?
Мое приложение построено вокруг AvalonDock, который имеет довольно хороший скин Visual Studio 2010 (который намного красивее, чем все другие скины). Теперь я хотел бы стилизовать остальную часть моего приложения, чтобы пойти с ним. Меня больше всего интересуют следующие части:
- Панель инструментов - мне в основном удалось правильно подобрать цвета, но панели инструментов VS все еще красивее.
- (Контекстное) меню - VS имеет синюю рамку фокусировки для пункта меню, замененную приятной оранжевой, которая дает приложению гораздо теплее и дружелюбнее.
- Фон главного окна - это то, что AD не понял правильно.
Эти стили где-то в сети? Или их можно как-то извлечь из ВС?
Спасибо за любую помощь.
1 ответ
Когда у меня была та же цель, я использовал Reflector (с надстройкой BAML Viewer) и этот редактор цвета
Стили и шаблоны элементов управления VS расположены по пути (Path of VS2010)\Common7\IDE\en\
, Необходимый файл есть Microsoft.VisualStudio.Shell.UI.Internal.resources.dll
Если развернуть эту библиотеку в BAML Viewer, будет много файлов, но самые полезные перечислены в файле themes/generic.xaml.
Они есть:
- Styles / MainWindowStyle.xaml - разметка главного окна.
- Styles / CommandMenuStyle.xaml - стили меню, панели инструментов, поля со списком.
- Styles / StandardContextMenuStyle.xaml - стиль контекстного меню.
Например, если вы откроете MainWindowsStyle.xaml, вы найдете этот код:
<Setter x:Uid="Setter_26" Property="Background" Value="{DynamicResource {x:Static EnvironmentBackgroundGradientKey}}" />
Теперь установите редактор темы VS Color, в Visual Studio откройте тему -> Настройка цветов -> По умолчанию.Ключ
EnvironmentBackgroundGradient
имеет 4 пункта в списке. Это можно записать следующим образом:
<LinearGradientBrush x:Key="EnvironmentBackgroundGradient" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#293955"/>
<GradientStop Color="#35496a" Offset="0.5"/>
<GradientStop Color="#35496a" Offset="0.5"/>
<GradientStop Color="#293955" Offset="1"/>
</LinearGradientBrush>
Возможно, эти цвета описаны где-то подробно, но я не нашел этого, поэтому я использовал Reflector.
Еще сборки, которые могут быть полезны:
- en \ Microsoft.VisualStudio.Platform.WindowManagement.resources.dll - стили TabControl и DockManager
- PrivateAssemblies \ Microsoft.VisualStudio.ExtensionsExplorer.UI.dll - выбор нового проекта
И вот TabControl
с VS2010 посмотри что я реализовал ранее. Он не имеет такой же функциональности, но выглядит одинаково.