Поделиться через


Пошаговое руководство. Предоставление метаданных для значков панели инструментов

В этом пошаговом руководстве показано, как предоставить значки панели элементов для разных конструкторов, таких как Visual Studio и Expression Blend, в библиотеке пользовательских элементов управления Windows Presentation Foundation (WPF). При добавлении пользовательского элемента управления в панель элементов конструктора соответствующий значок появляется рядом с именем элемента управления.

Конструктор WPF для Visual Studio позволяет представлять пользовательские значки панели элементов для разных конструкторов. Например, можно предоставить разные значки для пользовательского элемента управления в Visual Studio и Expression Blend. Значки, представляемые реализацией времени разработки, переопределяют используемые по умолчанию значки в сборке времени выполнения элемента управления.

В данном пошаговом руководстве выполняются следующие задачи.

  • Создайте проект библиотеки пользовательских элементов управления WPF с внедренным растровым изображением значка.

  • Создайте отдельную сборки для метаданных времени разработки, переопределяющую используемый по умолчанию значок панели элементов.

  • Протестируйте значок элемента управления во время разработки.

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

Примечание

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров.Дополнительные сведения см. в разделе Работа с параметрами.

Обязательные компоненты

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

  • Visual Studio 2010.

Создание пользовательского элемента управления со значком панели элементов

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

Создание пользовательского элемента управления со значком панели элементов

  1. Создайте новый проект библиотеки пользовательских элементов управления WPF на языке Visual Basic или Visual C# с именем TailspinToysControlLibrary.

  2. Переименуйте файл кода CustomControl1 в TailspinToysControl.

  3. Добавьте значок панели элементов с именем TailspinToysControl.icon.bmp как внедренный ресурс. Дополнительные сведения см. в разделе Пошаговое руководство. Создание пользовательского значка панели элементов для элемента управления.

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

  5. Задайте выходной путь проекта как ".. \TailspinToysControlLibrary\bin\".

  6. Выполните построение решения.

Создание сборки метаданных времени разработки

Код времени разработки развертывается в особых сборках метаданных. В данном пошаговом руководстве пользовательские метаданные поддерживаются только средой Visual Studio и Expression Blend развертывается в сборке с именем TailspinToysControlLibrary.Design.

Создание сборки метаданных времени разработки

  1. Создайте сборку времени разработки с именем TailspinToysControlLibrary.Design. Дополнительные сведения см. в разделе Пошаговое руководство. Предоставление пользовательских метаданных времени разработки.

  2. Откройте файл кода RegisterMetadata в редакторе кода.

  3. Замените автоматически создаваемый код на следующий код. Этот код создает класс AttributeTable, который присоединяет пользовательские атрибуты времени разработки к классу TailspinToysControl.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Microsoft.Windows.Design;
    using Microsoft.Windows.Design.Features;
    using Microsoft.Windows.Design.Metadata;
    
    using TailspinToysControlLibrary;
    
    // The ProvideMetadata assembly-level attribute indicates to designers
    // that this assembly contains a class that provides an attribute table. 
    [assembly: ProvideMetadata(typeof(TailspinToysControlLibrary.Design.RegisterMetadata))]
    namespace TailspinToysControlLibrary.Design
    {
        internal class RegisterMetadata : IProvideAttributeTable
        {
            // Called by the designer to register any design-time metadata. 
            public AttributeTable AttributeTable
            {
                get
                {
                    AttributeTableBuilder builder = new AttributeTableBuilder();
    
                    // Set ToolboxBrowsableAttribute to true to display your custom control 
                    // in the Toolbox and in the Choose Items... dialog box. 
                    builder.AddCustomAttributes(typeof(TailspinToysControl), new ToolboxBrowsableAttribute(true));
    
                    return builder.CreateTable();
                }
            }
        }
    }
    
  4. Сохраните решение.

Создание значков панели элементов времени разработки

Теперь, имея сборку времени разработки, можно создать пользовательские значки панели элементов и добавить их в проект как внедренные ресурсы. Вы создадите два значка, один для Visual Studio и один для Expression Blend.

Создание значка панели элементов времени разработки для Visual Studio

  1. Добавьте в проект новый файл растрового изображения TailspinToysControlLibrary.Design. Назовите файл растрового изображения TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp.

  2. В окне "Свойства" присвойте свойству Цвета растрового изображения значение 24 бита.

  3. Используя средство Текст нарисуйте в растровом изображении слово METADATA, указывающее, что значок установлен из метаданных конструктора.

  4. В обозревателе решений выберите файл растрового изображения.

  5. В окне "Свойства" задайте для свойства Действие при построении значение Внедренный ресурс.

  6. Добавьте в проект новый файл растрового изображения TailspinToysControlLibrary.Design. Назовите файл растрового изображения TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.bmp.

    Примечание

    Blend загружает как значки только файлы с расширением png, так что для создания значка Blend нужно воспользоваться внешней программой Paint.

  7. Щелкните правой кнопкой мыши в редакторе изображений и выберите команду Открыть внешний редактор.

    Откроется приложение Paint.

  8. Используя средство "Текст", нарисуйте в растровом изображении слово BLEND, указывающее, что значок предназначен для использования в окне Expression Blend Основные фонды.

  9. Сохраните изображение в виде png-файла.

  10. В обозревателе решений щелкните правой кнопкой мыши проект TailspinToysControlLibrary.Design, затем последовательно выберите Добавить и Существующий элемент.

  11. В диалоговом окне Добавление существующего элемента выберите TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png и щелкните Добавить.

  12. В обозревателе решений выберите png-файл изображения.

  13. В окне "Свойства" задайте для свойства Действие при построении значение Внедренный ресурс.

  14. Удалите пустой файл растрового изображения TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.bmp.

  15. Выполните построение решения.

Тестирование значков панели элементов

Для тестирования пользовательского значка панели элементов следует добавить элемент TailspinToysControl в панель элементов.

Тестирование значка панели элементов

  1. Добавьте в решение новый проект приложения WPF на языке Visual Basic или Visual C# с именем TestApplication.

    Файл MainWindow.xaml будет открыт в сред. Конструктор WPF. В панели элементов TailspinToysControl отобразится на вкладке Элементы управления TailspinToysControlLibrary. Будет отображен значок элемента управления по умолчанию.

    Значок панели элементов по умолчанию

    Примечание

    Значок, внедренный в сборку элемента управления времени выполнения отображен не будет.Это ограничение функции автозаполнения панели элементов.

  2. В панели элементов щелкните правой кнопкой мыши TailspinToysControl, выберите команду Удалить и нажмите кнопку ОК.

    TailspinToysControl будет удален из панели элементов.

  3. В панели элементов щелкните правой кнопкой мыши вкладку Элементы управления TailspinToysControlLibrary и выберите команду Выбор элементов.

    Откроется диалоговое окно Выбор элементов панели элементов.

  4. Перейдите на вкладку Компоненты WPF. Дополнительные сведения см. в разделе Вкладка "Компоненты WPF" диалогового окна "Выбор элементов панели элементов".

  5. Нажмите кнопку Обзор и перейдите в папку ailspinToysControlLibrary\TailspinToysControlLibrary\bin.

  6. Выберите TailspinToysControlLibrary.dll двойным щелчком.

    В диалоговом окне Выбор элементов панели элементов появятся сведения о сборке TailspinToysControlLibrary. В группе TailspinToysControl1 появится пользовательский значок времени разработки.

    Диалоговое окно "Выбор элементов панели элементов" с пользовательским значком

  7. Нажмите кнопку ОК.

    TailspinToysControl отобразится на панели элементов со значком TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp, переопределяющим значок в сборке времени выполнения.

    Пользовательский значок панели элементов

Следующие действия

  • Можно также загрузить пользовательский элемент управления и сборку времени разработки в Expression Blend. Начиная с Expression Blend 4, значок TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png отображается в окне Основные фонды при добавлении ссылки на проект в сборку TailspinToysControlLibrary.dll.

  • Можно разворачивать сборки времени разработки, используя процедуру регистрации AssemblyFoldersEx. Дополнительные сведения см. в разделе Развертывание сборок пользовательских элементов управления и сборок времени разработки.

См. также

Задачи

Пошаговое руководство. Создание пользовательского значка панели элементов для элемента управления

Ссылки

AttributeTable

Вкладка "Компоненты WPF" диалогового окна "Выбор элементов панели элементов"

Другие ресурсы

Значки панели элементов

Пошаговое руководство. Предоставление пользовательских метаданных времени разработки

Развертывание сборок пользовательских элементов управления и сборок времени разработки

Предоставление метаданных времени разработки