Estoy trabajando en un complemento de nivel de aplicación de Word 2007. Hasta ahora, no he experimentado grandes obstáculos, excepto para convertir la interfaz Ribbon del complemento a XML. Tengo que usar Ribbon XML porque la función en la que estoy trabajando solo se puede hacer de esta manera. El problema es que al cambiar a Ribbon XML ya no puedo acceder a la interfaz en tiempo de ejecución a través de Globals.Ribbons. Este enlace http://msdn.microsoft.com/en-us/library/bb772088.aspx hace un buen trabajo explicando cómo acceder a una cinta de Visual Designer, pero ignora por completo el caso de XML Ribbon. Específicamente, necesito poder acceder a algunos controles visuales como etiquetas. ¿Cómo puedo conseguir esto?¿Hay alguna manera de acceder a Ribbon (XML) en tiempo de ejecución?
Respuesta
Globals.Ribbons es una característica del diseñador VSTO, si utiliza RibbonXML, entonces no tiene esta característica. Lo que el diseñador realmente hace bajo las cubiertas es crear cinta xml para Office, luego cuando la oficina hace una devolución de llamada, VSTO levantará el controlador de eventos apropiado para ese contexto (documento). Debido a que está utilizando RibbonXML, omite por completo el soporte del diseñador de cinta VSTO (lo prefiero de esta manera, es más rápido y tiene más control).
Con ribbon XML tendrá que registrar una devolución de llamada onLoad para su etiqueta, Office le pasará un IRibbonControl, que será la etiqueta, y usted tiene cosas limitadas que puede hacer. Si quisieras cambiar el texto, entonces deberías registrar una devolución de llamada getText, luego invalidar ese control de cinta, lo que hará que la devolución de llamada getText sea reevaluada.
Tener más información acerca de lo que realmente quiere lograr sería útil =) Tengo la sensación de que mi proyecto VSTO contrib también hará su vida mucho más fácil, ya que le ofrece muchas de las características agradables de Ribbon Designer al utilizar ribbon xml . Pero dime qué es lo que quieres hacer y puedo darte más información al respecto.
Saludos, Jake
¿Cuándo intentas acceder a Globals.ribbons?
Como recuerdo, no se completará hasta casi el final de la fase de inicio de Word.
si intenta acceder demasiado pronto, no habrá ninguna cinta definida todavía.
Estoy intentando acceder a los Globals.Ribbons de Application_DocumentOpen que es la función que es llamada cuando se abre un nuevo documento. El caso es que esto solía funcionar para la cinta Visual Designer. Sin embargo, después de cambiar, Globals.Ribbons.Count siempre es 0, aunque se muestra la cinta XML. – AlgolDocks
Al trabajar con XML de la cinta, yo tratamos de esto, pero yo no podía acceder a la propiedad de los Ribbon1 Globals.Ribbons .. El simple propiedad no estaba allí ..
Sin embargo, se me ocurrió otra solución que básicamente tenía que ver con un tipo de molde adecuado.
En ThisAddIn.cs:
private Microsoft.Office.Core.IRibbonExtensibility ribbonObj;
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
ribbonObj = new Ribbon1(this);
return ribbonObj;
}
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// Calling the public method TEST() in Ribbon1.cs
//MyNameSpace is the namespace used in your project ie., your project name
((MyNameSpace.Ribbon1)ribbonObj).TEST();
// Calling the public variable flag in Ribbon1.cs
((MyNameSpace.Ribbon1)ribbonObj).flag;
}
- 1. ¿Hay alguna manera de acceder al hardware directamente en Python?
- 2. ¿Hay alguna manera de cargar un archivo de clase para ensamblar en tiempo de ejecución?
- 3. ¿Hay alguna sobrecarga en tiempo de ejecución para leer solo?
- 4. ¿Hay alguna manera de obtener el bytecode para una clase en tiempo de ejecución?
- 5. ¿Hay alguna manera de obtener la identificación del paquete en tiempo de ejecución?
- 6. ¿Hay alguna manera de detener el tiempo. ¿Duerme en Windows?
- 7. ¿Hay alguna manera de acceder a R a través de la web?
- 8. ¿Hay alguna manera de obligar a Eclipse a limpiar automáticamente cada ejecución?
- 9. ¿Hay alguna manera de desactivar las advertencias xml?
- 10. Delphi: ¿Hay alguna manera de acceder a registros en un TClientDataset además de mover el cursor
- 11. ¿Hay alguna manera de acceder a la colección de sesiones actuales en ASP.NET?
- 12. ¿Hay alguna manera de acceder a una cadena como manejador de archivos en php?
- 13. En Scala, ¿hay alguna manera de acceder a un símbolo (variable) definido en un ámbito externo?
- 14. ¿Hay alguna manera de atrapar un intento de acceder a una propiedad o método inexistente?
- 15. ¿Hay alguna manera de acceder a los registros de IM de Skype?
- 16. ¿Hay alguna manera de acceder a los dispositivos Bluetooth Low Low Energy en iOS?
- 17. ¿Alguna vez alguien usa el Control Ribbon?
- 18. ¿Hay alguna manera de acceder a la API de LinkedIn sin un usuario?
- 19. ¿Hay alguna manera de determinar dinámicamente los ivars de una clase en tiempo de ejecución en Cocoa/Cocoa Touch?
- 20. ¿Hay alguna manera de acceder a __dict__ (o algo así) que incluya clases base?
- 21. Cargando XAML XML a través del tiempo de ejecución?
- 22. ¿Hay alguna manera de hacer que el tiempo de ejecución de Jruby sea interno en todas las cadenas?
- 23. ¿Hay alguna forma de acceder dinámicamente a un superglobal?
- 24. ¿Hay alguna manera de detener la invocación de un método en tiempo de compilación?
- 25. ¿hay alguna manera simple de convertir mi objeto XML a String en java?
- 26. ¿Hay alguna forma de convertir json a xml en PHP?
- 27. ¿Hay alguna manera de acceder a los bits individuales con una unión?
- 28. ¿hay alguna manera de acceder a todas las referencias al objeto dado?
- 29. ¿Hay alguna manera de hacer referencia a los comentarios xml para evitar duplicarlos?
- 30. ¿Hay alguna manera de hacer la validación XSD de una secuencia XML en PHP
Hola, Jake. Gracias por la respuesta. De hecho investigué mucho desde que publiqué esta pregunta y llegué a la misma conclusión. Todavía esperaba que alguien encontrara alguna forma de acceder a la interfaz desde Global.Ribbons. De todos modos, en realidad convertí mi solución y ahora uso RibbonXML y devoluciones de llamadas para cambiar las etiquetas, mostrar información y cambiar la visibilidad de ciertos controles. – AlgolDocks
Su respuesta/respuesta Jake es muy apreciada. MSDN no parece cubrir esto en ninguna parte. Invalidar el control funcionó perfectamente. – Daniel