Как включить определенные элементы управления из System.Windows.Controls в мое приложение Silverlight? - PullRequest
1 голос
/ 01 сентября 2009

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

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

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

1 Ответ

2 голосов
/ 01 сентября 2009

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

Исходный код для Silverlight 2 Runtime и SDK Controls

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

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

UPDATE:

Так что я получил это после прыжков через несколько обручей. Сначала я скачал исходный проект от 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

...