2009-09-01 6 views
1

Microsoft hat eine praktische Referenz der verschiedenen Steuerelemente in der System.Windows.Controls namespace and which controls are included in the runtime.Wie schließe ich bestimmte Steuerelemente von System.Windows.Controls in meine Silverlight App ein?

Für alle hier aufgelisteten Steuerelemente, die nicht in der Laufzeitumgebung enthalten sind, müssen Sie den Verweis auf die System.Windows.Controls-Assembly einschließen und in Visual Studio "copy local" auswählen. Das mache ich gerade und es funktioniert.

Durch Hinzufügen dieser DLL füge ich jedoch fast 80 KB zu meiner XAP-Datei (und meine XAP-Datei ist nur 110 KB). Die einzige Kontrolle, die ich benutze, ist der GridSplitter. Gibt es eine Möglichkeit, eine komprimierte Version dieser Assembly neu zu erstellen, die nur den GridSplitter enthält?

Antwort

2

Es sieht aus wie ich nur die Antwort für Silverlight 2 gefunden ...

Source Code for Silverlight 2 Runtime and SDK Controls

Und ich denke, dass jetzt für mich arbeiten werde. Ich sollte in der Lage sein, durch das Projekt zu gehen und alle unnötigen Bits aus dem Projekt auszuschließen und eine Neuerstellung durchzuführen.

Ich benutze immer noch Silverlight 2, aber ich werde in ein paar Monaten auf 3 wechseln. Und für Silverlight 3 scheint es nicht dasselbe zu geben. Vielleicht ist die Quelle für Silverlight 3 noch nicht verfügbar?

UPDATE:

Also habe ich diese Arbeit, nachdem sie durch einige Reifen springen. Zuerst habe ich das Quellprojekt von Microsoft heruntergeladen und dann angefangen, Sachen zu entfernen. Aber dann habe ich gemerkt, dass ich die Lösung nicht bauen konnte. Tatsächlich konnte ich auch keine unmodifizierte Version der Lösung erstellen. Ich habe Fehler bei der starken Namensüberprüfung erhalten. Ich habe versucht, die Signierung von starken Namen im Abschnitt "Signieren" der Projekteigenschaften zu deaktivieren, aber ich habe denselben Fehler erhalten. Ich habe die Assembly sogar der Überprüfungs-Liste für die starke Namensüberprüfung hinzugefügt und bin schließlich über den Fehler hinweggekommen. Aber als ich versuchte, die neue Assembly in mein Silverlight-Projekt aufzunehmen und in einem Browser auszuführen, erhielt ich einen leeren Bildschirm (das Silverlight-Steuerelement wurde nie geladen). Ich bin mir immer noch nicht sicher, warum, aber ich bin mir sicher, dass ich etwas verpasst habe.

Schließlich habe ich gerade ein neues Projekt erstellt. Es scheint, ich hätte das von Anfang an tun sollen. Ich musste nur eine leere C# -Silverlight-Klassenbibliothek für den GridSplitter erstellen. Dann habe ich angefangen, die für den GridSplitter notwendigen Quelldateien zu diesem Projekt hinzuzufügen und dann den Namespace und den Assemblynamen auf System.Windows.Controls zu setzen. Nachdem ich dieses Projekt erstellt und in meiner Silverlight App referenziert hatte, funktionierte es endlich. Das Ergebnis: Einsparungen von 60 KB.

schrieb ich ein wenig mehr über diese hier:

http://regexhero.net/blog/2009/09/optimizing-silverlight-xap-file.html

Falls sie jemand will, ich 4 der Steuerelemente aus dem SDK hier haben ...

http://www.silverlightxap.com/controls/tagged/silverlight-sdk

+1

Der Silverlight 2 Code sollte in Silverlight 3 funktionieren. – KeithMahoney

+0

Ja, guter Punkt. Ich denke, das ist das erste Mal, dass ich meine Antwort auf meine eigene Frage akzeptiert habe. –

Verwandte Themen