다음을 통해 공유


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

WPF Designer for Visual Studio를 사용하여 다양한 디자이너에 대한 사용자 지정 디자인 타임 메타데이터를 제공할 수 있습니다. 예를 들어 Visual Studio와 Expression Blend의 사용자 지정 컨트롤에 대해 서로 다른 디자인 환경을 대상으로 할 수 있습니다. 사용자 지정 디자인 타임 메타데이터를 디자이너에 등록하려면 IProvideAttributeTable 인터페이스를 구현하고 AddCustomAttributes 메서드 중 하나를 호출합니다.

이 연습에서는 WPF 또는 Silverlight 사용자 지정 컨트롤 라이브러리에 대한 사용자 지정 디자인 타임 구현을 제공하는 방법을 보여 줍니다. 이 연습에서는 다음 작업을 수행합니다.

  • WPF 사용자 지정 컨트롤 라이브러리 프로젝트를 만듭니다.

  • 디자인 타임 메타데이터를 위한 별도의 어셈블리를 만듭니다.

이 연습을 마치면 WPF 또는 Silverlight 사용자 지정 컨트롤에 대한 사용자 지정 디자인 타임 메타데이터를 제공하는 방법을 이해하게 됩니다.

참고

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

사전 요구 사항

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

  • Visual Studio 2010.

사용자 지정 컨트롤 만들기

첫 번째 단계로 WPF 사용자 지정 컨트롤에 대한 프로젝트를 만듭니다.

사용자 지정 컨트롤을 만들려면

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

    코드 편집기에 CustomControl1의 코드가 열립니다.

    참고

    사용자 지정 디자인 환경에서 Expression Blend 4 및 Visual Studio 2010만 대상으로 하면 되는 경우 프로젝트의 대상 프레임워크를 .NET Framework 4로 설정합니다. 사용자 지정 디자인 환경에서 Expression Blend 3, Expression Blend 4 및 Visual Studio 2010을 대상으로 해야 하는 경우에는 프로젝트의 대상 프레임워크를 .NET Framework 3.5로 설정합니다.

  2. 솔루션 탐색기에서 코드 파일의 이름을 TailspinToysControl.cs 또는 TailspinToysControl.vb로 변경합니다. 이 프로젝트의 모든 참조에서 이름을 바꿀지 묻는 메시지 상자가 표시되면 를 클릭합니다.

  3. 프로젝트 속성을 열고 빌드(Visual Basic의 경우 컴파일) 탭을 선택합니다.

  4. 프로젝트의 출력 경로를 "bin\"으로 설정합니다.

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

디자인 타임 메타데이터 어셈블리 만들기

디자인 타임 코드는 특수 메타데이터 어셈블리에 배포됩니다. 이 연습에서 사용자 지정 메타데이터는 Visual Studio 및 Expression Blend 에서 지원되고 TailspinToysControlLibrary.Design이라는 어셈블리에 배포됩니다. 어셈블리 이름 지정에 대한 자세한 내용은 사용자 지정 컨트롤 및 디자인 타임 어셈블리 배포를 참조하십시오.

디자인 타임 메타데이터 어셈블리를 만들려면

  1. Visual Basic 또는 Visual C#에서 TailspinToysControlLibrary.Design이라는 새 클래스 라이브러리 프로젝트를 솔루션에 추가합니다.

  2. 프로젝트의 출력 경로를 ".. \TailspinToysControlLibrary\bin\"으로 설정합니다. 이렇게 하면 컨트롤의 어셈블리와 메타데이터 어셈블리가 같은 폴더에 유지되므로 디자이너에서 메타데이터를 검색할 수 있습니다.

  3. 다음 WPF 및 XAML 어셈블리에 대한 참조를 추가합니다.

    • PresentationCore

    • PresentationFramework

    • System.Xaml

    • WindowsBase

  4. 다음 WPF Designer 어셈블리에 대한 참조를 추가합니다. 

    • Microsoft.Windows.Design.Extensibility

    • Microsoft.Windows.Design.Interaction

    참고

    Expression Blend를 설치한 경우 참조 추가 대화 상자에 WPF Designer 어셈블리 집합이 두 개 표시될 수 있습니다. Visual Studio와 함께 설치된 두 어셈블리를 선택합니다. 이들 어셈블리는 $(VSInstallDir)\Common7\IDE\PublicAssemblies 폴더에 있습니다.

    참고

    참조 추가 대화 상자에 WPF Designer 어셈블리가 표시되지 않으면 찾아보기 탭을 클릭하고 $(VSInstallDir)\Common7\IDE\PublicAssemblies 폴더에 있는 어셈블리로 이동합니다.

  5. TailspinToysControlLibrary 프로젝트에 참조를 추가합니다.

  6. 솔루션 탐색기에서 Class1 코드 파일의 이름을 RegisterMetadata.cs 또는 RegisterMetadata.vb로 변경합니다.

  7. 자동으로 생성된 코드를 다음 코드로 바꿉니다. 이 코드는 사용자 지정 디자인 타임 특성을 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();
                }
            }
        }
    }
    
  8. 솔루션을 빌드합니다.

다음 단계

참고 항목

작업

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

참조

AttributeTable

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

기타 리소스

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

도구 상자 아이콘

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

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