VS 2013 SDK: Как добавить разделитель строк в меню CommandBarPopup?

В C# или VB.Net, используя пакет Visual Studio, как я мог бы добавить разделительную строку к CommandBarPopup меню?.

Я попробовал решение, данное @Carlos J. Quintero в этом вопросе:

Как вставить разделительную строку между несколькими командами надстроек в командной строке меню?

Используя этот код:

    Private Sub AddSeparatorLine(ByRef cmndBarPopup As CommandBarPopup,
                                 ByVal index As Integer)

        Dim tempCommandBarButton As CommandBarButton =
            DirectCast(cmndBarPopup.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, index, True), CommandBarButton)

        With tempCommandBarButton 
            .BeginGroup = True
            .Visible = True
            .Enabled = False
        End With

    End Sub

Тем не менее, он просто добавляет пробел (кнопка без имени), чтобы сделать разделитель, а не разделительная линия.

Это вид разделительной линии, которую я ожидаю:

введите описание изображения здесь

Но вот что я получил:

введите описание изображения здесь

2 ответа

Решение

Создание пользовательского интерфейса для пакетов совершенно отличается от создания его для надстроек. Для пакетов почти все делается в файле.vsct. Разделители строк разделяют группы, поэтому, если вам нужен разделитель строк, вам нужно объявить новую группу. См. Как создавать повторно используемые группы кнопок.

Вы должны определить символы, кнопки и группы в файле vsct, даже для контекстного меню. Я бы создал все возможные элементы и решил, какие из них включить / сделать видимыми во время выполнения. В качестве альтернативы вы можете использовать для этого флаг команды DynamicItemStart.

Я хотел бы посоветовать вам взглянуть на эту статью, которая довольно хорошо объясняет особенности работы с vspackages. Это на самом деле одна часть всей серии, которая мне очень помогла, когда мне понадобилась информация о vspackage, которую было трудно найти в другом месте. Посмотрите на раздел "Разделение групп команд в меню" для вашей проблемы.

ОБНОВИТЬ

Это руководство для Visual Studio 2013

введите описание изображения здесь

VSDebug Сообщение

Данные меню:

Guid = {D309F791-903F-11D0-9EFC-00A0C911004F}
GuidID = 4
CmdID = 1037
Type = 0x00000400
Flags = 0x00000000
NameLoc = Code Window
Другие вопросы по тегам