Как добавить панели инструментов значок управления Silverlight
История изменений:
- впервые опубликованных на 1/21/2008 для Silverlight 2/VS2008/Toolkit Выпуск декабрь 2008 года.
- обновление 12/5/2009 для Silverlight 4/VS2010/Blend3/Toolkit ноября 2009 Release.
Элементы управления в Silverlight выполнения (например, system.windows.dll) и SDK (например, system.windows.controls.dll) есть хорошие иконки в панели инструментов Visual Studio и Blend. Декабрь 2008 выпуском Silverlight Toolkit добавил, что для набора средств управления тоже, как описано в моем предыдущем посте время разработки возможности в Silverlight Toolkit :
Это сообщение объясняет, как это делается в Silverlight 2 SDK, и в декабре 2008 года выпуск Silverlight Toolkit.
Управление Иконки в Run Time Ассамблеи
Выпуск декабря 2008 года Silverlight Toolkit показал, как внедрить инструментарий значков для элементов управления без использования сборки время разработки.
Открытое Silverlight.Controls.sln в Visual Studio (см. предыдущий пост время разработки функций реализации в Silverlight Toolkit для получения дополнительной информации о том, как загрузить исходный набор инструментов):
Вы также можете открыть Controls.csproj в блокноте:
<ItemGroup>
<EmbeddedResource Include="Microsoft.Windows.Controls.AutoCompleteBox.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.DockPanel.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Expander.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Label.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.TreeView.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Viewbox.Icon.png" />
</ ItemGroup>
Вы также можете открыть Microsoft.Windows.Controls.dll в отражатель:
Все три показывают, что пользовательские иконки панели инструментов, внедренных ресурсов в период выполнения сборки Microsoft.Windows.Controls.dll, уделяя особое соглашение об именовании. Возьмите выше Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png в качестве примера:
- Первый Microsoft.Windows.Controls является корневым пространством имен, указанных в controls.csproj файл с линии: <RootNamespace> System.Windows.Controls </ RootNamespace>
- Следующий Microsoft.Windows.Controls.AutoCompleteBox является полное имя AutoCompleteBox класса, в том числе имен, но не сборки.
- Остальные названия, icon.png, укажите тип ресурса значка, как это будет объяснено позже.
Иконки управления в режиме конструктора Ассамблеи время
Silverlight 2 SDK продемонстрировали подход встраивания пиктограммы управления в области дизайна время сборки.
Открытое System.Windows.Controls.Design.dll в отражатель (он установлен в папке% ProgramFiles% \ Microsoft SDKs \ Silverlight \ v2.0 \ Libraries \ Client):
Возьмите выше Controls.Design.Icons.Calendar.bmp в качестве примера:
- Controls.Design является корневым пространством имен, указанных в его csproj файл с линии <RootNamespace> Controls.Design </ RootNamespace>
- Иконки в папке, где находится файл Calendar.bmp в дерево исходных текстов
- Calendar.bmp это имя файла ресурса иконку в дерево исходных текстов
Иконка управления ресурсами Naming Convention
Итак, из выше двух примерах мы видим, что пользовательские иконки панели инструментов для управления внедренных ресурсов в любой сборки во время выполнения (так что вам не придется отправить проектирования сборок времени), или сборке время разработки (у вас есть возможность изменить иконки , как и локализовать ее для другой культуры, не касаясь запустить сборку времени). Инструментов (Visual Studio 2008 SP1 на данный момент) попытаться найти иконки на основе специального соглашения об именах:
- Поиск ресурсов именем файла без расширения соответствует типу имя элемента управления, в том числе имен, с "{XAML | BMP | PNG | GIF | JPG | JPEG} [значок *.]"..
- Обратите внимание, что подкаталоги влияют имен, в котором внедренные ресурсы находятся. Например, Инструментарий иконки ставятся под подпапку Microsoft.Windows.Controls, чтобы не подвергать эту длинную строку во всех именах значок файла, в то время как SDK поставить все иконки в папке Icons.
- Поддерживаемые расширения и типы файлов: XAML, BMP, GIF, JPG, JPEG и PNG
- Рекомендуемые размер изображения для растровых форматов файлов на основе составляет 64 × 64.
- [. Значок *] в именовании не является обязательным и позволяет указать несколько размеров изображения, который используется как значок. Соответствуют следующим следующему алгоритму:
- Векторные XAML
- Если есть точное соответствие по размеру (и размеры) использовать его
- Используйте ближайший матч в зависимости от размера и соотношения сторон
- Если данный ресурс файл не является допустимым XAML или действительный файл изображения, следующий матч будет использоваться, пока не найдет.
- Если изображение не найден в том же пространстве имен контролем, свободной матча в зависимости от типа одно только название будет искаться против всех ресурсов, как в случае с SDK.
- Различные узлы используют различные размеры изображений для их инструментов значок.
- Смесь используется 24 × 24 для их большого размера и 12 × 12 для их небольшого размера (я не думаю, что это работает в Blend 2 SP1).
- Сидр (Visual Studio) использует 16 × 16 BMP файлов.
Сообщение в блоге Указание Toolbox Иконка для элемента управления в WPF Конструктор описывает соглашение об именах подробнее.
Обновление для Blend3 и VS2010
Так как этот пост был впервые опубликован на 1/21/2008, мы сделали два ключевых усовершенствований в области контроля иконки:
- Blend 3 показывает иконки для управления тоже: большие иконки (24 × 24) в библиотеке активов, а маленькие иконки (12 × 12) в объекты и сроки. Смотрите Silverlight время разработки: Инструментарий июля 2009 Выпуск обновлений для получения дополнительной информации.
- Вы можете зарегистрировать свой контроль (и связанные с ними иконки) с Blend 3 и Visual Studio 2010. Смотрите Регистрация Silverlight управления с Visual Studio и смесь для получения дополнительной информации.
- Именования значок ресурса вместе с пересмотренным именования для сборок время разработки. Смотрите Silverlight время разработки Ассамблеи для получения дополнительной информации о расширенной именования для сборок время разработки. Пожалуйста, обратите внимание, что поиск ресурсов икона находится в порядке, обратном порядку загрузки время разработки метаданных, то есть смесь будет искать для встраиваемых ресурс значка для управления с выше ресурс значка именования в формате *. Expression.Design *. DLL в первую очередь; только если он не будет смесь поиск общих *. Дизайн *. DLL второй, и только в том случае, если снова не удалось это будет искать соответствующие DLL времени выполнения для встроенного ресурса значка, а если все не смогли, Blend будет отображать иконку по умолчанию контроля. Visual Studio 2010 делает это подобным образом, но ищет *. VisualStudio.Design *. DLL в первую очередь.
- Смешивание и Visual Studio теперь поддерживает более значок формата, и будет масштабироваться значок, если желаемый размер ресурсов (24 × 24 и 12 × 12 для Blend, и 16 × 16 для VS) не найдена.
Silverlight Toolkit использовать следующие обозначения для вложения значок ресурсы:
- использования полных имен (пространство имен + типа, напр. System.Windows.Controls.Calendar), а не просто названия типов (например, календарь), чтобы избежать двусмысленности.
- положить иконки для смешивания в общем. design.dll и значки на панели элементов Visual Studio в. VisualStudio.Design *. DLL. Таким образом, VS2010 может отображать значок правой панели инструментов, если он существует в библиотеке VisualStudio.Design *.;. Если нет, то VS2010 может загрузить иконку для Blend, масштабировать его до 16 × 16, и отобразить его в панели инструментов.
- положил значок ресурса во время выполнения DLL только в крайнем случае (исключая, чтобы избежать поставки проектирования сборок время с единственным ресурсом, значок).
Вы можете видеть, управления ресурсами значок именования в Silverlight Toolkit исходный код :








Последние комментарии