다음을 통해 공유


연습: 도구 상자 아이콘에 대한 메타데이터 제공

이 연습에서는 WPF(Windows Presentation Foundation) 사용자 지정 컨트롤 라이브러리에 Visual Studio 및 Expression Blend와 같은 다양한 디자이너에 대한 도구 상자 아이콘을 제공하는 방법을 보여 줍니다. 디자이너의 도구 상자에 사용자 지정 컨트롤을 추가하면 컨트롤의 이름 옆에 적절한 아이콘이 표시됩니다.

WPF Designer for Visual Studio를 사용하여 다양한 디자이너에 대한 사용자 지정 도구 상자 아이콘을 제공할 수 있습니다. 예를 들어 Visual Studio 및 Expression Blend의 사용자 지정 컨트롤에 대해 서로 다른 아이콘을 제공할 수 있습니다. 디자인 타임 구현에서 제공하는 아이콘은 컨트롤의 런타임 어셈블리에 있는 기본 아이콘을 재정의합니다.

이 연습에서는 다음 작업을 수행합니다.

  • 포함된 아이콘 비트맵이 있는 WPF 사용자 지정 컨트롤 라이브러리를 만듭니다.

  • 기본 도구 상자 아이콘을 재정의하는 디자인 타임 메타데이터용 어셈블리를 별도로 만듭니다.

  • 디자인 타임에 컨트롤의 아이콘을 테스트합니다.

이 연습을 마치면 디자인 타임에 사용자 지정 컨트롤의 기본 런타임 아이콘을 바꾸는 방법을 이해하게 됩니다.

참고

표시되는 대화 상자와 메뉴 명령은 활성 설정이나 버전에 따라 도움말에서 설명하는 것과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.

사전 요구 사항

이 연습을 완료하려면 다음 구성 요소가 필요합니다.

  • Visual Studio 2010.

도구 상자 아이콘이 있는 사용자 지정 컨트롤 만들기

컨트롤에 대한 사용자 지정 도구 상자 아이콘을 만들려면 컨트롤의 프로젝트에 이미지를 포함 리소스로 추가합니다.

도구 상자 아이콘이 있는 사용자 지정 컨트롤을 만들려면

  1. Visual Basic 또는 Visual C#에서 TailspinToysControlLibrary라는 새 WPF 사용자 지정 컨트롤 라이브러리 프로젝트를 만듭니다.

  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. 자동으로 생성된 코드를 다음 코드로 바꿉니다. 이 코드는 사용자 지정 디자인 타임 특성을 TailspinToysControl 클래스에 연결하는 AttributeTable을 만듭니다.

    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 파일만 아이콘으로 로드되므로 외부 Paint 프로그램을 사용하여 Blend 아이콘을 만듭니다.

  7. 이미지 편집기를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 외부 편집기 열기를 선택합니다.

    그림판 응용 프로그램이 열립니다.

  8. 텍스트 도구를 사용하여 비트맵 형식으로 BLEND를 그립니다. 이 비트맵은 이 아이콘이 Expression Blend의 자산 창에서 사용됨을 나타냅니다.

  9. 이미지를 .png 파일로 저장합니다.

  10. 솔루션 탐색기에서 ailspinToysControlLibrary.Design 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 바로 가기 메뉴에서 기존 항목을 선택합니다.

  11. 기존 항목 추가 대화 상자에서 TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png를 선택한 다음 추가를 클릭합니다.

  12. 솔루션 탐색기에서 .png 이미지 파일을 선택합니다.

  13. 속성 창에서 빌드 작업 속성을 포함 리소스로 설정합니다.

  14. TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.bmp 비트맵 파일을 삭제합니다.

  15. 솔루션을 빌드합니다.

도구 상자 아이콘 테스트

도구 상자에 TailspinToysControl을 추가하여 사용자 지정 도구 상자 아이콘을 테스트합니다.

도구 상자 아이콘을 테스트하려면

  1. Visual Basic 또는 Visual C#에서 TestApplication이라는 WPF 응용 프로그램 프로젝트를 솔루션에 추가합니다.

    WPF Designer에 MainWindow.xaml이 열립니다. 도구 상자에서 TailspinToysControlLibrary 컨트롤 탭에 TailspinToysControl이 나타납니다. 기본 컨트롤 아이콘이 표시됩니다.

    기본 도구 상자 아이콘

    참고

    컨트롤의 런타임 어셈블리에 포함된 아이콘은 표시되지 않습니다. 이는 도구 상자 자동 채우기 기능의 제한 사항입니다.

  2. 도구 상자에서 TailspinToysControl을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 삭제를 선택한 다음 확인을 클릭합니다.

    TailspinToysControl이 도구 상자에서 제거됩니다.

  3. 도구 상자에서 TailspinToysControlLibrary 컨트롤 탭을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 항목 선택을 선택합니다.

    도구 상자 항목 선택 대화 상자가 열립니다.

  4. WPF 구성 요소 탭을 클릭합니다. 자세한 내용은 도구 상자 항목 선택 대화 상자, WPF 구성 요소 탭을 참조하십시오.

  5. 찾아보기를 클릭하고 TailspinToysControlLibrary\TailspinToysControlLibrary\bin 폴더로 이동합니다.

  6. TailspinToysControlLibrary.dll을 두 번 클릭하여 선택합니다.

    TailspinToysControlLibrary 어셈블리의 세부 정보가 도구 상자 항목 선택 대화 상자에 표시됩니다. 사용자 지정 디자인 타임 아이콘이 TailspinToysControl 그룹 상자에 표시됩니다.

    사용자 지정 아이콘이 있는 도구 상자 항목 선택 대화 상자

  7. 확인을 클릭합니다.

    TailspinToysControlTailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp 아이콘과 함께 도구 상자에 표시됩니다. 이 아이콘은 런타임 어셈블리의 아이콘을 재정의합니다.

    사용자 지정 도구 상자 아이콘

다음 단계

  • Expression Blend에서 사용자 지정 컨트롤 및 디자인 타임 어셈블리를 로드할 수도 있습니다. Expression Blend 4부터는 TailspinToysControlLibrary.dll 어셈블리에 대한 프로젝트 참조를 추가하면 자산 창에 TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png 아이콘이 표시됩니다.

  • AssemblyFoldersEx 등록 절차를 사용하여 런타임 및 디자인 타임 어셈블리를 배포할 수 있습니다. 자세한 내용은 사용자 지정 컨트롤 및 디자인 타임 어셈블리 배포를 참조하십시오.

참고 항목

작업

연습: 컨트롤에 대한 사용자 지정 도구 상자 아이콘 만들기

참조

AttributeTable

도구 상자 항목 선택 대화 상자, WPF 구성 요소 탭

기타 리소스

도구 상자 아이콘

연습: 사용자 지정 디자인 타임 메타데이터 제공

사용자 지정 컨트롤 및 디자인 타임 어셈블리 배포

디자인 타임 메타데이터 제공