功能區 XML
[功能區 (XML)] 項目可讓您使用 XML 自訂功能區。 如果您要使用 [功能區 (視覺化設計工具)] 項目不支援的方式自訂功能區,請使用 [功能區 (XML)] 項目。 如需比較各項目的功能,請參閱功能區概觀。
**適用於:**本主題中的資訊適用於下列應用程式的文件層級專案和應用程式層級專案:Excel 2007 和 Excel 2010、InfoPath 2010、Outlook 2007 和 Outlook 2010、PowerPoint 2007 和 PowerPoint 2010、Project 2010、Visio 2010、Word 2007 和 Word 2010。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能。
將功能區 (XML) 項目加入至專案
您可以從 [加入新項目] 對話方塊,將 [功能區 (XML)] 項目加入至任何 Office 專案。 Visual Studio 會自動將下列檔案加入您的專案中:
功能區 XML 檔。 這個檔案會定義功能區使用者介面 (UI)。 請使用這個檔案加入 UI 項目,例如索引標籤、群組和控制項。 如需詳細資訊,請參閱本主題後段的功能區 XML 檔案參考。
功能區程式碼檔案。 此檔案內含「功能區類別」(Ribbon Class), 這個類別具有您在 [加入新項目] 對話方塊中為 [功能區 (XML)] 項目所指定的名稱。 Microsoft Office 應用程式使用此類別的執行個體來載入自訂功能區。 如需詳細資訊,請參閱本主題後段的功能區類別參考。
根據預設,這些檔案會在功能區的 [增益集] 索引標籤中加入自訂群組。
在 Microsoft Office 應用程式中顯示自訂功能區
將 [功能區 (XML)] 項目加入至專案之後,必須將程式碼加入至 [ThisAddin]、[ThisWorkbook] 或 [ThisDocument] 類別,這些類別會覆寫 CreateRibbonExtensibilityObject 方法並將 [功能區 XML] 類別傳回至 Office 應用程式。
下列程式碼範例將覆寫 CreateRibbonExtensibilityObject 方法並傳回名為的 MyRibbon 的功能區 XML 類別。
Protected Overrides Function CreateRibbonExtensibilityObject() As _
Microsoft.Office.Core.IRibbonExtensibility
Return New MyRibbon()
End Function
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new MyRibbon();
}
定義自訂功能區的行為
您可以建立「回呼方法」(Callback Method)來回應使用者動作 (例如,按一下功能區上的按鈕)。 回呼方法和 Windows Form 控制項中的事件非常類似,但回呼方法是由 UI 項目中 XML 的屬性所識別。 請在功能區類別中撰寫方法,接著控制項便會呼叫與屬性值名稱相同的方法。 例如,您可以建立當使用者按一下功能區按鈕時所呼叫的回呼方法。 建立回呼方法需要執行兩個步驟:
在識別程式碼中回呼方法的功能區 XML 檔中,將屬性指派給控制項。
在功能區類別中定義回呼方法。
注意事項 |
---|
Outlook 還需要另一個步驟。 如需詳細資訊,請參閱自訂 Outlook 的功能區。 |
如需示範如何利用功能區自動化應用程式的逐步解說,請參閱逐步解說:使用功能區 XML 建立自訂的索引標籤。
將回呼方法指派給控制項
若要將回呼方法指派給功能區 XML 檔中的控制項,請加入指定回呼方法型別及方法名稱的屬性。 例如,下列項目會定義擁有名稱為 OnToggleButton1 之 onAction 回呼方法的切換按鈕。
<toggleButton id="toggleButton1" onAction="OnToggleButton1" />
當使用者執行與特定控制項相關聯的主要工作時,便會呼叫 onAction。 例如,當使用者按一下切換按鈕時,便會呼叫該按鈕的 onAction 回呼方法。
您在屬性中指定的方法可以使用任何名稱, 但必須符合您在功能區程式碼檔案中定義之方法的名稱。
您可以將許多不同型別的回呼方法指定給功能區控制項。 如需每個控制項可用之回呼方法的完整清單,請參閱技術文件為程式開發人員自訂 Office (2007) 功能區使用者介面 (第三部分,共三部分)。
定義回呼方法
請在功能區程式碼檔案的功能區類別中定義回呼方法。 回呼方法具有幾項需求:
必須將其宣告為公用 public。
其名稱必須符合您指派給功能區 XML 檔中控制項之回呼方法的名稱。
其簽章 (Signature) 必須符合相關功能區項目適用之回呼方法型別的簽章。
如需功能區控制項回呼方法簽章的完整清單,請參閱技術文件為程式開發人員自訂 Office (2007) 功能區使用者介面 (第三部分,共三部分)。 Visual Studio 不會針對您在功能區程式碼檔案中建立的回呼方法提供 IntelliSense 支援。 如果您建立的回呼方法不符合有效的簽章,雖然程式碼會進行編譯,但是當使用者按一下控制項時,並不會產生任何反應。
所有的回呼方法都有 Microsoft.Office.Core.IRibbonControl 參數,代表呼叫方法的控制項。 您可以使用這個參數,對多個控制項重複使用相同的回呼方法。 下列程式碼範例示範的 onAction 回呼方法會根據使用者所按下的控制項,執行不同的工作。
Public Sub OnActionCallback(ByVal control As Office.IRibbonControl, _
ByVal isPressed As Boolean)
If (control.Id = "checkBox1") Then
MessageBox.Show("You clicked " + control.Id)
Else
MessageBox.Show("You clicked a different control.")
End If
End Sub
public void OnActionCallback(Office.IRibbonControl control, bool isPressed)
{
if (control.Id == "checkBox1")
{
MessageBox.Show("You clicked " + control.Id);
}
else
{
MessageBox.Show("You clicked a different control.");
}
}
功能區 XML 檔參考
您可以透過在功能區 XML 檔中加入項目和屬性的方式來定義自訂功能區。 根據預設,功能區 XML 檔包含下列 XML。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">
<ribbon>
<tabs>
<tab idMso="TabAddIns">
<group id="MyGroup"
label="My Group">
</group>
</tab>
</tabs>
</ribbon>
</customUI>
下表描述功能區 XML 檔中的預設項目。
項目 |
說明 |
---|---|
customUI |
代表增益集專案中的自訂功能區。 |
ribbon |
代表功能區。 |
tabs |
代表一組功能區索引標籤。 |
tab |
代表單一功能區索引標籤。 |
group |
代表功能區索引標籤上的控制項群組。 |
這些項目都擁有指定自訂功能區外觀和行為的屬性。 下表描述功能區 XML 檔中的預設屬性。
屬性 |
父項目 |
說明 |
---|---|---|
onLoad |
customUI |
識別應用程式載入功能區時所呼叫的方法。 |
idMso |
tab |
識別要顯示在功能區中的內建索引標籤。 |
id |
group |
識別群組。 |
label |
group |
指定出現在群組上的文字。 |
功能區 XML 檔中的預設項目和屬性是一小組的可用項目和屬性子集。 如需可用項目和屬性的完整清單,請參閱技術文件為程式開發人員自訂 Office (2007) 功能區使用者介面 (第二部分,共三部分)。
功能區類別參考
Visual Studio 會在功能區程式碼檔中產生功能區類別。 將功能區上之控制項的回呼方法加入至這個類別。 這個類別會實作 Microsoft.Office.Core.IRibbonExtensibility 介面。
下表描述此類別中的預設方法。
方法 |
說明 |
---|---|
GetCustomUI |
傳回功能區 XML 檔的內容。 Microsoft Office 應用程式會呼叫這個方法,以取得定義自訂功能區使用者介面的 XML 字串。 這個方法會實作 IRibbonExtensibility.GetCustomUI(String) 方法。
注意事項
GetCustomUI 僅應實作以傳回功能區 XML 檔的內容,而不應用來初始化增益集。具體而言,您不應嘗試在 GetCustomUI 實作中顯示對話方塊或其他視窗。否則自訂功能區可能無法正確運作。如果需要執行初始化增益集的程式碼,請將該程式碼加入至 ThisAddIn_Startup 事件處理常式中。
|
OnLoad |
將 Microsoft.Office.Core.IRibbonControl 參數指派給 ribbon 欄位。 Microsoft Office 應用程式會在載入自訂功能區時呼叫此方法。 您可以使用這個欄位動態更新自訂功能區。 如需詳細資訊,請參閱技術文件為程式開發人員自訂 Office (2007) 功能區使用者介面 (第一部分,共三部分)。 |
GetResourceText |
由 GetCustomUI 方法呼叫以取得功能區 XML 檔的內容。 |