Этот вопрос составляет 3 года, но помог мне продвинуться дальше, и я хочу поделиться им с вами. Во-первых, я сделал это на VB.net, поэтому мой код будет в VB.net. Есть некоторые онлайн-инструменты для преобразования кода в C#. Во-вторых, я использовал кнопку Toggle вместо кнопки Simple. В-третьих, я использовал OnOff
в качестве настройки проекта, чтобы сохранить состояние кнопки Toggle.
Шаг 1: Файл Ribbon.xml, код для размещения кнопки переключения на ленте. Предполагая, что вы уже установили теги tab
и group
в файл.
<toggleButton id="onoffTBTN" label="ON/OFF" showImage="true" onAction="OnOffToggle" getImage="OnOffImage"/>
Шаг 2: Ribbon.vb файл, код, чтобы изменить настройку OnOff
, основываясь на положении тумблера (нажата или нет) и силы, чтобы аннулировать таможенный контроль
Public Sub OnOffToggle(ByVal control As Office.IRibbonControl, ByVal pressed As Boolean)
My.Settings.OnOff = pressed
My.Settings.Save()
myRibbon.InvalidateControl("onoffTBTN")
End Sub
Шаг 3: Лента .vb, читает настройку OnOff
и соответственно изменяет изображение. Имейте в виду, что ваши изображения должны быть добавлены в ресурсы вашего проекта, чтобы использовать их по адресу My.Resources.*
. Я использовал png-файлы, которые поддерживают прозрачные пиксели. Эта функция вызывается в двух случаях: сначала при запуске Outlook и секундах, когда нажата кнопка переключения, и, в частности, с командой myRibbon.InvalidateControl("onoffTBTN")
.
Public Function OnOffImage(ByVal control As Office.IRibbonControl) As Drawing.Bitmap
Dim onoff As Boolean = My.Settings.OnOff
Select Case control.Id
Case "onoffTBTN"
If onoff = True Then
Return New Drawing.Bitmap(My.Resources._on)
Else
Return New Drawing.Bitmap(My.Resources.off)
End If
End Select
End Function
Единственное странное поведение, когда установка OnOff
было установлено значение TRUE. Отобразится правильное изображение, но кнопка Toggle выглядит не нажатой. Вам нужно дважды щелкнуть, чтобы установить для параметра OnOff
значение False.