SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure
Silverlight Controls in Webparts hosten

Blogs

Fabian´s Blog [SharePoint MVP]

Syndication

Nachdem ich in zwei vorangestellten Artikeln beschrieben hatte, wie eine SharePoint-Umgebung für die Integration von ASP.NET 3.5 AJAX und Silverlight vorbereitet wird, möchte ich heute zeigen, wie Silverlight Controls über einen Webpart gehostet werden können.

.NET Framework 3.5 AJAX und Silverlight in SharePoint registrieren

Silverlight (Beta 2 oder RC0) in SharePoint-Anwendungen aktivieren

1. Webpart Class Library erstellen
Zunächst muss das Grundgerüst des Webparts auf Basis einer .NET Framework 3.5 Klassenbibliothek erstellt werden. Dazu muss der Namensraum System.Web registriert werden und die Webpart-Klasse von System.Web.UI.WebControls erben.

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Web.UI.WebControls.WebParts;
   6: using System.Web.UI;
   7: using System.Web.UI.WebControls;
   8:  
   9: namespace FM.Demos
  10: {
  11:     public class HelloSilverlightWebPart : WebPart
  12:     {        
  13:         public HelloSilverlightWebPart()
  14:         {
  15:         }
  16:       
  17:         protected override void CreateChildControls()
  18:         {
  19:             base.CreateChildControls();                      
  20:         }
  21:      }
  22: }


2. System.Web.Silverlight Assembly registrieren
Die durch das Silverlight SDK mitglieferte Assembly kann direkt aus dem SDK referenziert werden. C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Libraries\Server\System.Web.Silverlight.dll

Hinweis: Die Assembly muss für den Betrieb in SharePoint-Umgebungen im Global Assembly Cache bereitgestellt werden.


3. Silverlight Control implementieren
Nachdem die vorbereitenden Schritte erledigt sind, kann innerhalb der Webpart-Klasse das Silverlight-Control erstellt und konfiguriert werden.

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Web.UI.WebControls.WebParts;
   6: using System.Web.UI;
   7: using System.Web.UI.SilverlightControls;
   8: using System.Web.UI.WebControls;
   9:  
  10: namespace FM.Demos
  11: {
  12:     public class HelloSilverlightWebPart : WebPart
  13:     {
  14:         Silverlight silverlightControl = null; 
  15:  
  16:         public HelloSilverlightWebPart()
  17:         {
  18:         }
  19:  
  20:         protected override void OnInit(EventArgs e)
  21:         {
  22:             EnsureScriptManager();
  23:         }
  24:  
  25:         protected override void CreateChildControls()
  26:         {
  27:             base.CreateChildControls();
  28:             silverlightControl = new Silverlight();
  29:             silverlightControl.ID = "silverlightControl";
  30:             silverlightControl.Source = "/ClientBin/HelloSilverlight.xap";
  31:             silverlightControl.Width = Unit.Pixel(400);
  32:             silverlightControl.Height = Unit.Pixel(200);            
  33:             
  34:  
  35:             this.Controls.Add(silverlightControl);
  36:         }
  37:  
  38:         private void EnsureScriptManager()
  39:         {
  40:             ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
  41:  
  42:             if (scriptManager == null)
  43:             {
  44:                 scriptManager = new ScriptManager();
  45:                 scriptManager.EnablePartialRendering = true;
  46:  
  47:                 if (Page.Form != null)
  48:                 {
  49:                     Page.Form.Controls.AddAt(0, scriptManager);
  50:                 }
  51:             }
  52:         }
  53:     }
  54: }

Die vermutlich wichtigste Eigenschaft ist die Source. Sie definiert den Server-seitigen Pfad zum Silverlight Control (XAP-Datei). In meinem Beispiel habe ich dem Steuerelement noch eine ID, sowie die Höhe und Breite mitgegeben.

In der OnInit-Methode wird über eine Hilfsmethode geprüft, ob der AJAX ScriptManager auf der Webseite vorhanden ist und ggf. der Page hinzugefügt.


4. Silverlight Control bereitstellen
Das Silverlight Control (XAP-Datei) muss unterhalb der Webanwendungsdateien (z.B. C:\inetpub\wwwroot\wss\VirtualDirectories\Intranet) in einem dedizierten Verzeichnis bereitstellt werden (in meinem Beispiel ClientBin), wonach es durch den Webpart innerhalb einer SharePoint-Seite ausgeliefert werden kann.

Das vollständige Beispiel incl. Feature, SharePoint Solution sowie des Beispiel Controls kann hier heruntergeladen werden.


Bereitgestellt 28 Okt 2008 8:58 von Fabian Moritz

Kommentare

TrackBack geschrieben Silverlight Clock Webpart
on 17 Nov 2008 8:09

Silverlight Clock Webpart