我有一个由VSTO-4和VS2017制作的XML,可以在Outlook-2016中运行。我使用的不是Visual Studio提供的设计器,而是整个“流畅”模式(XML)。
这个功能区如果是用按钮实现的,我的客户在同一个功能区中有这么多按钮/选项时“有点”迷失了……它们中的大多数实际上只是我的程序的“选项”。
我想使这个Ribbon (现在命名为Ribbon-1)只有3个按钮,其中一个是"OPTIONS“命令按钮,以调用Ribbon-2,这个按钮填充了Ribbon-1中的所有其他按钮。
显然,Ribbon-2将出现在Ribbon-1的相同选项卡上(至少“显示在同一个TAB中”),一旦用户设置了一个选项,他点击"BACK“按钮,Ribbon-2消失,Ribbon-1再次出现...
我们可以在一些AddIns中看到这种行为,我也想做同样的事情。
有什么建议吗?我很感谢你的建议。
发布于 2018-08-31 13:58:50
与其使用多个功能区,不如将所有控件放在一个功能区中。使用getVisible属性可以设置所有按钮和组的可见性,这些按钮和组应选择性地隐藏或可见。使用toggleButton显示/隐藏这些按钮。
toggleButton的onAction回调可以设置getVisible回调可以检查的类级变量。然后,该过程使功能区无效,以便触发getVisible回调。它们依次检查类级别变量以确定每个按钮的可见性状态。
请注意,当功能区加载时,也会执行get回调。
Ribbon XML示例:
<group id="MyGroup" label="TEST empty" visible="true">
<button id="testButton" label="test empty" visible="true"/>
<toggleButton id="testToggle" label="toggle optional buttons" visible="true" onAction="toggleVisibleControls"/>
<button id="optionalButton" label ="optional" getVisible="isVisible" />
</group>
<group id="Optional" label="Optional group" getVisible="isVisible"></group>VSTO Ribbon XML的示例VB.NET代码:
'Generated by VSTO
<Runtime.InteropServices.ComVisible(True)> _
Public Class Ribbon1
Implements Office.IRibbonExtensibility
Private ribbon As Office.IRibbonUI
Private ShowHide As Boolean = False
Public Sub New()
End Sub
Public Function GetCustomUI(ByVal ribbonID As String) As String Implements Office.IRibbonExtensibility.GetCustomUI
Return GetResourceText("VB2010addin_RibbonXML.Ribbon1.xml")
End Function
#Region "Ribbon Callbacks"
'Create callback methods here. For more information about adding callback methods, select the Ribbon XML item in Solution Explorer and then press F1.
Public Sub Ribbon_Load(ByVal ribbonUI As Office.IRibbonUI)
Me.ribbon = ribbonUI
End Sub
Public Function isVisible(ByVal control As Office.IRibbonControl) As Boolean
Return Me.ShowHide
End Function
Public Sub toggleVisibleControls(ByVal control As Office.IRibbonControl, pressed As Boolean)
ShowHide = pressed
ribbon.Invalidate()
End Sub
#End Regionhttps://stackoverflow.com/questions/52087308
复制相似问题