Как мне включить определенные элементы управления из System.Windows.Controls в мое приложение Silverlight?

У Microsoft есть удобный справочник по различным элементам управления в системе . Windows.Controls и какие элементы управления включены в среду выполнения.

Для любых перечисленных здесь элементов управления, которые не включены в среду выполнения, необходимо включить ссылку на сборку System.Windows.Controls и выбрать «копировать локально» в Visual Studio. Вот чем я сейчас занимаюсь, и это работает.

Однако, включив эту DLL, я добавляю почти 80 КБ в свой файл XAP (а размер моего файла XAP составляет всего 110 КБ). Единственный элемент управления, который я использую, для которого он нужен, - это GridSplitter. Есть ли способ восстановить сокращенную версию этой сборки, которая включает только GridSplitter?


person Steve Wortham    schedule 01.09.2009    source источник


Ответы (1)


Похоже, я только что нашел ответ для Silverlight 2 ...

Исходный код для Silverlight 2 Runtime и SDK Элементы управления

И я думаю, что сейчас это сработает для меня. Я должен иметь возможность просмотреть проект, исключить из него все ненужные фрагменты и выполнить перестройку.

Я все еще использую Silverlight 2, но через пару месяцев перейду на 3. И я не могу найти то же самое для Silverlight 3. Может быть, исходный код еще не доступен для Silverlight 3?

ОБНОВИТЬ:

Так что я получил эту работу после того, как прыгнул через несколько обручей. Сначала я скачал исходный проект из Microsoft, а потом просто начал удалять вещи. Но потом я заметил, что не могу построить решение. На самом деле я тоже не смог собрать неизмененную версию решения. У меня возникали ошибки при проверке строгого имени. Я попытался снять отметку с подписи строгого имени в разделе «Подписывание» свойств проекта, но получил ту же ошибку. Я даже добавил сборку в список пропусков проверки строгого имени и, наконец, справился с ошибкой. Но когда я пытался включить новую сборку в свой проект Silverlight и запустить ее в браузере, я получал пустой экран (элемент управления Silverlight никогда не загружался). Я до сих пор не понимаю, почему, но уверен, что что-то упустил.

Наконец-то я только что создал свежий проект. Кажется, я должен был сделать это с самого начала. Мне просто нужно было создать пустую библиотеку классов C # Silverlight для GridSplitter. Затем я начал добавлять в этот проект исходные файлы, необходимые для GridSplitter, а затем установил пространство имен и имя сборки на System.Windows.Controls. После создания этого проекта и ссылки на него в моем приложении Silverlight он, наконец, заработал. Результат: экономия 60 КБ.

Я написал об этом немного подробнее здесь:

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

Если кому-то они нужны, у меня есть 4 элемента управления из SDK прямо здесь ...

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

person Steve Wortham    schedule 01.09.2009
comment
Да, хорошее замечание. Думаю, это первый раз, когда я принял ответ на свой вопрос. - person Steve Wortham; 01.09.2009