[VSTO 4.0] Mejoras respecto a la versión 3.0

A partir de ahora y sí el tiempo me lo permite, voy a empezar a escribir sobre la nueva versión de VSTO. A través de ejemplos nos adentraremos en este desconocido mundo, y digo desconocido porque la información que hay al respecto es escasísima y en esta nueva versión se pueden hacer cosas muy interesantes ;)

Lo primero es ver que nuevas mejoraras han incorporado el equipo de producto:

Soporte para NET 4.0

Todo lo que incorpora el framework 4.0 lo tenemos disponible en la nueva versión de VSTO.

Por ejemplo, quién no recuerda esto:

object iconIndex = Missing.Value;
object link = true;
object placement = Missing.Value;
object displayAsIcon = true;
object dataType = Missing.Value;
object iconFileName = Missing.Value;
object iconLabel = Missing.Value;
 
content.Range.PasteSpecial(ref iconIndex,
                           ref link,
                           ref placement,
                           ref displayAsIcon,
                           ref dataType,
                           ref iconFileName,
                           ref iconLabel);

 

Pues ahora no es necesario, podemos hacer uso de los parámetros opcionales de C#:

content.Range.PasteSpecial(Link: false, 
                           DataType: Word.WdPasteDataType.wdPasteBitmap);
 
Podemos destacar también el uso de LINQ, WCF…
 

UI

La parte de interfaz gráfica también ha sufrido un cambio bastante importante. Para mí la mejor noticias es que podemos usar WPF, sí lo estas oyendo bien, WPF. Imaginate lo que se puede hacer ahora con un TaskPane, vamos que los límites los pone tu imaginación.

private void CreateTaskPanes()
{
    Forms.UserControl taskPane = new Forms.UserControl();
 
    taskPane.Controls.Add(
        new ElementHost
        {
            Child = new PositionReportDialog(),
            Dock = DockStyle.Fill
        });
 
    Microsoft.Office.Tools.CustomTaskPane snippetsTaskPane =
        Globals.ThisAddIn.CustomTaskPanes.Add(taskPane, Properties.Resources.PositionReportTitle);
 
    snippetsTaskPane.Width = 400;
}

 

PositionReportDialog es un wizard desarrollado con WPF y MVVM, ¿acojonante no?

Otra cosa que me ha gustado mucho son los CallBacks de la Ribbon, por ejemplo, si quieres deshabilitar un control, si quieres cargar una imagen en un botón, o localizar textos… puedes hacer uso de los CallBacks:

<button id="btnRibbonEvolution" getLabel="GetLocalizeText" getImage="GetButtonImage" onAction="ShowReport" />
En este caso concreto hay 2 CallBacks y un evento, la firma del CallBack es esta:
 
public System.Drawing.Bitmap GetButtonImage(Office.IRibbonControl control)
{
    return (System.Drawing.Bitmap)Properties.Resources.ResourceManager.GetObject(control.Id);
}
Todos los CallBacks reciben como parámetro el control qué lo ha llamado.

Otra cosa nueva es el BackStage View, que es un conjunto de comandos que podemos usar para hacer cosas a un documento. Este es el aspecto del BackStage View de Word

image

Podemos customizarlo a través del fichero Ribbon.xml:

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

Y por último los Context Menus:

image

que al igual que el BackStage View podemos crearlos mediante el fichero Ribbon.xml.

De momento esto es todo lo que quería destacar, hay más mejoras pero estas son las que más me han llamado la atención, en el siguiente veremos como crear un ejemplo y como se integra todo esto con Visual Studio 2010.

Para más info:

VSTO Developer Center

Hasta pronto!

Published 27/7/2010 11:17 por Luis Ruiz Pavón
Comparte este post:
http://geeks.ms/blogs/lruiz/archive/2010/07/27/vsto-4-0-mejoras-respecto-a-la-versi-243-n-3-0.aspx