无效不会隐藏标签 [英] Invalidate doesn't hide tabs
问题描述
我试图在Office 2007/2010框架中突破对Fluent Ribbon/RibbonUI系统的理解.
I am trying to push the limits of my understanding of the Fluent Ribbon/RibbonUI system in the Office 2007/2010 framework.
结合我对WPF/Silverlight的XAML设计的了解和理解,我想看看我是否可以动态显示/隐藏下面描述的Office菜单项,看来我对FUBAR有所帮助.
Coupling that with my knowledge and understanding of XAML design for WPF/Silverlight, i wanted to see if i could dynamically show/hide the described Office Menu items below and it seems i have FUBAR'd something up.
请告知我哪里出了问题,或者我需要进一步发展:
Please advise where i went wrong, or where i need to further develop:
<group id="grpITOfficeMenu"
label="Office Menu">
<button id="btnShowOffice"
label="Show"
onAction="ShowOfficeTabs"/>
<button id="btnHideOffice"
label="Hide"
onAction="HideOfficeTabs" />
</group>
<group id="grpITContextualTabs"
label="Contextual Tabs" >
<button id="btnShowContext"
label="Show"
onAction="ShowContextualTabs"/>
<button id="btnHideContext"
label="Hide"
onAction="HideContextualTabs"/>
</group>
...
<officeMenu>
<button idMso="FileNew"
getVisible="OfficeGetVisible" />
<button idMso="FileOpen"
getVisible="OfficeGetVisible" />
</officeMenu>
<contextualTabs>
<tabSet idMso="TabSetSmartArtTools"
getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetChartTools"
getVisible="ContextualGetVisible"/>
<tabSet idMso="TabSetDrawingTools"
getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetPictureTools"
getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetPivotTableTools"
getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetHeaderAndFooterTools"
getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetTableToolsExcel"
getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetPivotChartTools"
getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetInkTools"
getVisible="ContextualGetVisible" />
</contextualTabs>
VBA:
'Method to Refresh the RibbonUI object
Sub RefreshRibbon(tag As String)
'Check if Ribbon variable has been initialized with Ribbon Object from Excel
If Not (Rib Is Nothing) Then
'Ribbon variable has been initialized.
MyTag = tag
Rib.Invalidate
End If
End Sub
'Flip OfficeMenu Tabs visible based on @OffVisible value
Sub OfficeGetVisible(control As IRibbonControl, ByRef returnVal)
returnVal = OffVisible
End Sub
'Flip Contextual Tabs visible based on @ContVisible value
Sub ContextualGetVisible(control As IRibbonControl, ByRef returnVal)
returnVal = ContVisible
End Sub
...
'Show/Hide ContextualTabs in the IT Mode
Sub ShowContextualTabs(Optional ctrl As Variant)
ContVisible = True
RefreshRibbon tag:=MyTag
End Sub
Sub HideContextualTabs(Optional ctrl As Variant)
ContVisible = False
RefreshRibbon tag:=MyTag
End Sub
'Show/Hide OfficeMenu Tabs in the IT Mode
Sub ShowOfficeTabs(Optional ctrl As Variant)
OffVisible = True
RefreshRibbon tag:=MyTag
End Sub
Sub HideOfficeTabs(Optional ctrl As Variant)
OffVisible = False
RefreshRibbon tag:=MyTag
End Sub
更新:
进行了一些详细的测试,并且在技术上可行,但是我最终要完成的工作是能够显示/隐藏功能区中的Home, Insert, Page Layout, Formulas, Data, Review, View, Developer, etc.
选项卡.我试图消除customui
元素中startfromscratch
属性的需要或必要性.
Update:
Did some detailed testing and it technically works, but what I am trying to ultimately have completed is the ability to show/hide Home, Insert, Page Layout, Formulas, Data, Review, View, Developer, etc.
tabs from the ribbon. I'm trying to remove the need, or necessity, of the startfromscratch
attribute in the customui
element.
推荐答案
解决了这个问题后,必须查看TabSets
和& amp;的所有idMso
值.功能区中的Tab
个对象.
Got it solved, had to go look at ALL of the idMso
values for both TabSets
& Tab
objects in the Ribbon.
因此,这是CustomUI的XML,以允许显示/隐藏某些默认(至少是我所需要的)Tab/TabSet.使用与上面相同的显示/隐藏"方法.
So here is the XML for the CustomUI to allow for Show/Hide of some of the Default (at least the ones i needed) Tab/TabSet's. Using the same Show/Hide methods above.
<customUI onLoad="s_UIOnLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<!-- Excel File Menu options, not available through Tab or TabSets -->
<officeMenu>
<button idMso="FileNew" getVisible="OfficeGetVisible" />
<button idMso="FileOpen" getVisible="OfficeGetVisible" />
</officeMenu>
<!-- Excel TabSets that only become visible when certain objects
are selected (such as ListObjects, PivotTables, Charts, etc) -->
<contextualTabs>
<tabSet idMso="TabSetChartTools" getVisible="ContextualGetVisible"/>
<tabSet idMso="TabSetDrawingTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetEquationTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetHeaderAndFooterTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetInkTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetPictureTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetPivotChartTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetPivotTableTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetSlicerTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetSmartArtTools" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetSparkline" getVisible="ContextualGetVisible" />
<tabSet idMso="TabSetTableToolsExcel" getVisible="ContextualGetVisible" />
</contextualTabs>
<tabs>
<!-- Excel Menu Tabs, these are not included in the TabSets and
must be explicitely defined -->
<tab idMso="TabAddIns" getVisible="OfficeGetVisible" />
<tab idMso="TabBackgroundRemoval" getVisible="OfficeGetVisible" />
<tab idMso="TabData" getVisible="OfficeGetVisible" />
<tab idMso="TabDeveloper" getVisible="OfficeGetVisible" />
<tab idMso="TabFormulas" getVisible="OfficeGetVisible" />
<tab idMso="TabHome" getVisible="OfficeGetVisible" />
<tab idMso="TabInsert" getVisible="OfficeGetVisible" />
<tab idMso="TabPageLayoutExcel" getVisible="OfficeGetVisible" />
<tab idMso="TabReview" getVisible="OfficeGetVisible" />
<tab idMso="TabView" getVisible="OfficeGetVisible" />
...
</tabs>
</ribbon>
</customUI>
这篇关于无效不会隐藏标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!