Il blog di Giuseppe Marchi - SharePoint MVP
NAVIGATION - SEARCH

Sviluppare una web part che funga da host per un'applicazione Silverlight

Per pubblicare un'applicazione Silverlight all'interno del contesto di SharePoint, quindi in una delle sue pagine, possiamo tranquillamente inserire un elemento di tipo "object" che mantenga il riferimento al file .xap relativo alla nostra applicazione.
Questa operazione la possiamo fare sia tramite SharePoint Designer, che tramite una web part custom che utilizzando la content editor web part offerta da SharePoint stesso.
Così facendo però, ci perdiamo un pò delle funzionalità che invece ci vengono date dal web control "Silverlight", presente all'interno del namespace "System.Web.UI.SilverlightControls", inserito nell'assembly "System.Web.Silverlight.dll".

Una volta installato ed abilitato il .NET Framework 3.5 all'interno della site collection in cui abbiamo intenzione di inserire la nostra applicazione Silverlight, non dobbiamo far altro che sviluppare una web part che funga da host per tale applicazione, utilizzando (appunto) le classi Silverlight e ScriptManager.
Ecco un semplice esempio:

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using System.Diagnostics;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.SilverlightControls;

namespace Peppe.Silverlight.WebParts
{
public class SilverlightWebPart : System.Web.UI.WebControls.WebParts.WebPart
{
protected Silverlight silverlightControl;
protected ScriptManager scriptManager;
private string xapLocation;

[WebBrowsable(true),
Personalizable(true),
WebPartStorage(Storage.Shared),
WebDisplayName("Xap location"),
WebDescription("Path of the silverlight application file"),
SPWebCategoryName("Options")]
public string XapLocation
{
get { return xapLocation; }
set { xapLocation = value; }
}

protected override void Render(HtmlTextWriter writer)
{
EnsureChildControls();

//passaggio di eventuali parametri all'applicazione Silverlight silverlightControl.InitParameters = "Param1=...";

base.Render(writer);
}

protected override void OnInit(EventArgs e)
{
base.OnInit(e);

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
if (scriptManager == null)
{
scriptManager = new ScriptManager();
scriptManager.ID = "currentScriptManager";
Page.Form.Controls.AddAt(0, scriptManager);
}
}

protected override void CreateChildControls()
{
base.CreateChildControls();

silverlightControl = new System.Web.UI.SilverlightControls.Silverlight();
silverlightControl.ID = "silverlightControl";
silverlightControl.Width = new Unit("400px");
silverlightControl.Height = new Unit("300px");
//silverlightControl.Width = Width; //silverlightControl.Height = Height; silverlightControl.Source = xapLocation;
Controls.Add(silverlightControl);
}
}
}

Una volta che avete compilato ed installato tale web part, vi dovete assicurare di avere o nella GAC del server o nella /BIN della directory mappata del sito SharePoint l'assembly "System.Web.Silverlight.dll".
Poi, va creata la directory "ClientBin" (tale nome non è assolutamente vincolante) all'interno della cartella mappata dal sito IIS proprio della vostra web application SharePoint (dove è presenta il web.config e la cartella /BIN, per intenderci), così facendo potrete inserire il path

/ClientBin/SilverlightApplication.xap

all'interno della proprietà "Xap location" della web part custom appena vista.
Ed ecco pronta la vostra web part host per qualsiasi applicazione Silverlight avete deciso di inserire all'interno delle pagine di SharePoint.
blog comments powered by Disqus