[英]Expose VSTO Ribbon to VisibleChanged event in C#
我正在使用C#VSTO創建Word 2010的應用程序級加載項。 當加載項的“自定義任務”窗格被隱藏或顯示時,我想訪問該加載項的功能區的get_Pressed
回調方法。 但是,為此,我需要功能區對ThisAddIn
類中的myTaskPane_VisibleChanged
事件可用。 我無法使用Ribbons
集合,因為加載項中的功能區是在Ribbon XML中創建的,而不是使用Visual Studio的Ribbon Designer創建的。
在ThisAddIn
類中,我有:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
myTaskPane.VisibleChanged += new EventHandler(myTaskPane_VisibleChanged);
}
和
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new myRibbon();
//I tried playing with IRibbonExtension here, but could not get that to work
}
和
public void myTaskPane_VisibleChanged(object sender, System.EventArgs e)
{
//Here is where I would like to access the ribbon
//I think the command would look something like:
//myRibbon.IsTaskPaneVisible = !myRibbon.IsTaskPaneVisible;
//myRibbon is not accessible here
}
在myRibbon類中,我有:
public class myRibbon : Office.IRibbonExtensibility
{
public Office.IRibbonUI ribbon;
private bool isTaskPaneVisible;
public bool IsTaskPaneVisible
{
get { return isTaskPaneVisible; }
set
{
isTaskPaneVisible = value;
ribbon.InvalidateControl("rxtglElementsPane");
}
}
和
public bool rxtglElementsPane_get_Pressed(Office.IRibbonControl control)
{
try
{
switch (control.Id)
{
case "rxtglElementsPane":
return isTaskPaneVisible;
default:
return false;
}
catch
{
return false;
}
}
}
大部分代碼基於本文:
作者在評論中提到在CreateRibbonExtensibilityObject
中生成的代碼包括功能區的實例化。 當我創建加載項時,Visual Studio 2013不會生成此類代碼。
從ThisAddIn
類訪問功能區的任何幫助將不勝感激。
MSDN Visual Studio論壇的Starain Chen向我提供了我在那兒發布的帖子的答案:
MSDN在C#中將VSTO功能區公開到VisibleChanged事件
解決的辦法是使用myRibbon
類型為ThisAddIn
類定義一個字段/屬性。
public partial class ThisAddIn
{
internal myRibbon myRibbon;
...
protected override Office.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
myRibbon=new myRibbon();
return myRibbon;
}
}
無需訪問功能區對象。 而是可以使用Globals.ThisAddin屬性訪問外接程序類。 有關更多信息,請參見Office項目中的對象的全局訪問 。 因此,您將能夠修改可在Ribbon回調中使用的任何局部變量。
您可以在MSDN的以下系列文章中閱讀有關Fluent UI(又稱為Ribbon UI)的更多信息:
為開發人員自定義2007 Office Fluent功能區(第1部分,共3部分)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.