2009-09-01 2 views
1

Microsoft a une référence pratique des différents contrôles dans le System.Windows.Controls namespace and which controls are included in the runtime. Pour tous les contrôles répertoriés ici qui ne sont pas inclus dans le moteur d'exécution, vous devez inclure la référence à l'assembly System.Windows.Controls et sélectionner «copier local» dans Visual Studio. C'est ce que je fais actuellement et ça marche.Comment inclure des contrôles spécifiques de System.Windows.Controls dans mon application Silverlight?

Cependant, en incluant cette DLL j'ajoute presque 80 Ko à mon fichier XAP (et mon fichier XAP est seulement 110 Ko). Le seul contrôle que j'utilise qui nécessite c'est le GridSplitter. Existe-t-il un moyen de reconstruire une version condensée de cet assemblage qui inclut uniquement GridSplitter?

Répondre

2

On dirait que je viens de trouver la réponse pour Silverlight 2 ...

Source Code for Silverlight 2 Runtime and SDK Controls

Et je pense que va travailler pour moi pour l'instant. Je devrais être capable de passer par le projet et d'exclure tous les bits inutiles du projet et faire une reconstruction. J'utilise toujours Silverlight 2 mais je vais passer à 3 dans quelques mois. Et je n'arrive pas à trouver la même chose pour Silverlight 3. Peut-être que la source n'est pas encore disponible pour Silverlight 3?

MISE À JOUR:

J'ai eu ce travail après avoir sauté à travers quelques cerceaux. Au début, j'ai téléchargé le projet source à partir de Microsoft, puis j'ai commencé à supprimer des éléments. Mais j'ai remarqué que je ne pouvais pas construire la solution. En fait, je ne pouvais pas non plus construire une version non modifiée de la solution. Je recevais des erreurs à propos de la vérification du nom fort. J'ai essayé de décocher la signature de nom fort de la section "Signature" des propriétés du projet mais j'ai eu la même erreur. J'ai même ajouté l'assembly à la liste de contrôle de vérification de nom fort et j'ai finalement passé l'erreur. Mais quand j'ai essayé d'inclure le nouvel assemblage dans mon projet Silverlight et que je l'ai lancé dans un navigateur, j'obtiens un écran vide (le contrôle Silverlight n'a jamais été chargé). Je ne sais toujours pas pourquoi mais je suis sûr qu'il me manquait quelque chose.

Enfin, je viens de créer un nouveau projet. Il semble que j'aurais dû le faire depuis le début. J'ai juste besoin de créer une bibliothèque de classes C# Silverlight vide pour le GridSplitter. Puis j'ai commencé à ajouter les fichiers source nécessaires pour le GridSplitter à ce projet, puis j'ai défini l'espace de noms et le nom de l'assembly à System.Windows.Controls. Après avoir construit ce projet, et référencé dans mon application Silverlight, il a finalement fonctionné. Le résultat: une économie de 60 Ko.

j'ai écrit un peu plus sur ce ici:

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

Au cas où quelqu'un les veut, j'ai 4 des commandes du SDK ici ...

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

+1

Le code Silverlight 2 devrait fonctionner dans Silverlight 3. – KeithMahoney

+0

Oui, bon point. Je pense que c'est la première fois que j'accepte ma réponse à ma propre question. –

Questions connexes