Можно ли отобразить пользовательский значок в строке состояния Visual Studio

Мне известно об отображении пользовательского текста в строке состояния Visual Studio с использованием интерфейса IVSStatusBar. Я даже написал об этом в блоге.

Однако у меня есть требование отображать пользовательский значок в строке состояния Visual Studio. Подобно тому, что Resharper делает для отображения ошибок решения. При нажатии на значок также появляется контекстное меню.

Резарпер Иконка

Итак, как я могу отобразить пользовательский значок в строке состояния Visual Studio и, если возможно, отобразить меню также при нажатии на него?, Пример поможет.

Метод Анимации IVSStatusBar уже отображает значки, но использует предопределенные значки, определенные в Константах. Можно ли иметь собственные иконки и перейти к методу анимации?

Исследуя SDK, я обнаружил, что интерфейс IVSStatusBarUser может использоваться для отображения пользовательской информации, когда отображается окно, реализующее этот интерфейс. Но я не уверен, что этот интерфейс можно использовать для отображения собственного значка.

1 ответ

Не существует опубликованного API для такого рода расширения строки состояния. В одном из моих собственных расширений (PerfWatson Monitor) я нахожу элемент строки состояния путем поиска в визуальном дереве WPF, используя рекурсивный поиск и VisualTreeHelperпо убыванию Application.Current.MainWindow ищет захват размера в правом нижнем углу - дочерний элемент с Name свойство установлено в "ResizeGripControl", Когда я нашел захват, я смотрю на его родителя (это должно быть DockPanel) и вставить мой контроль там. Обратите внимание, что, как показано на скриншоте, Resharper, как известно, использует подобный прием, поэтому вам придется придумать стратегию, которая работает с установленным Resharper и без него. Также обратите внимание, что некоторые части строки состояния (текст, информация о строке / столбце и любые анимации) выполняются в собственном потоке пользовательского интерфейса, поэтому будьте осторожны, если ваш контроль окажется там.

Я заметил, что вы также спрашиваете о расширении существующих анимаций. Да, вы можете предоставить свои собственные анимации через растровую полосу 16x16 кадров. См. Пример http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/fef208e7-b79d-4a0c-94fe-e6861196e1f5/. К сожалению, это не позволит активировать меню.

Другие вопросы по тегам