Pergunta

A Microsoft tem uma referência útil dos vários controles no System.Windows.Controls Namespace e quais controles estão incluídos no tempo de execução.

Para quaisquer controles listados aqui que não estejam incluídos no tempo de execução, você deve incluir a referência ao conjunto do sistema.Windows.Controls e selecione "Copiar Local" no Visual Studio. Então é isso que estou fazendo atualmente e funciona.

No entanto, ao incluir esta DLL, estou adicionando quase 80 kb ao meu arquivo XAP (e meu arquivo XAP é de apenas 110 kb). O único controle que estou usando que requer é o GridSplitter. Existe uma maneira de reconstruir uma versão condensada desta montagem que inclui apenas o GridSplitter?

Foi útil?

Solução

Parece que acabei de encontrar a resposta para Silverlight 2 ...

Código -fonte para Silverlight 2 Runtime e SDK Controls

E acho que vai funcionar para mim por enquanto. Eu deveria poder passar pelo projeto e excluir todos os bits desnecessários do projeto e fazer uma reconstrução.

Ainda estou usando o Silverlight 2, mas vou mudar para 3 em alguns meses. E não consigo encontrar a mesma coisa para Silverlight 3. Talvez a fonte ainda não esteja disponível para o Silverlight 3?

ATUALIZAR:

Então, eu consegui isso funcionando depois de pular por alguns aros. No começo, baixei o projeto de origem da Microsoft e comecei a remover coisas. Mas então notei que não conseguia construir a solução. Na verdade, eu também não pude criar uma versão não modificada da solução. Eu estava recebendo erros sobre a forte verificação de nome. Tentei desmarcar a assinatura de nome forte na seção "assinatura" das propriedades do projeto, mas recebi o mesmo erro. Até adicionei a montagem à lista de skip de verificação de nome forte e finalmente passei pelo erro. Mas quando tentei incluir a nova montagem no meu projeto Silverlight e executá -lo em um navegador, eu recebia uma tela em branco (o Silverlight Control nunca carregou). Ainda não sei por que, mas tenho certeza de que estava faltando alguma coisa.

Finalmente, acabei de criar um novo projeto. Parece que eu deveria ter feito isso desde o início. Eu só precisava criar uma biblioteca de classe C# Silverlight vazia para o GridSplitter. Depois, comecei a adicionar os arquivos de origem necessários para o GridSplitter a este projeto e, em seguida, eu defino o espaço para o nome e o nome da montagem como System.Windows.Controls. Depois de construir este projeto e referenciá -lo no meu aplicativo Silverlight, ele finalmente funcionou. O resultado: uma economia de 60 kb.

Eu escrevi um pouco mais sobre isso aqui:

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

Caso alguém queira, tenho 4 dos controles do SDK aqui ...

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top