0

Office2007/2010フレームワークのFluentRibbon/RibbonUIシステムの理解の限界を押し広げようとしています。

これを、WPF / SilverlightのXAML設計に関する知識と理解と組み合わせて、以下で説明するOfficeメニュー項目を動的に表示/非表示にできるかどうかを確認したいと思いました。

どこがうまくいかなかったのか、どこをさらに発展させる必要があるのか​​を教えてください。

CustomUI.xml

<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.、リボンからタブを表示/非表示にする機能です。startfromscratch要素内の属性の必要性、または必要性を削除しようとしていcustomuiます。

4

2 に答える 2

0

ゼロから始めます

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon  startFromScratch="true"/>
</customUI>

舞台裏以外のすべてを削除します。

それらの一部を戻したい場合は

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon  startFromScratch="true">
    <tabs>
      <tab idMso="TabView" visible="true"/>
    </tabs>
  </ribbon>
</customUI>
于 2013-08-05T21:50:11.480 に答える