Xamarin.Forms의 XAML 네임 스페이스XAML Namespaces in Xamarin.Forms

XAML 네임 스페이스 선언에 xmlns XML 특성을 사용합니다. 이 문서는 XAML 네임 스페이스 구문을 소개하고 XAML 네임 스페이스를 선언하여 유형에 접근하는 방법을 보여줍니다.XAML uses the xmlns XML attribute for namespace declarations. This article introduces the XAML namespace syntax, and demonstrates how to declare a XAML namespace to access a type.

개요Overview

XAML 파일의 루트 요소 내에 항상 있는 두 개의 XAML 네임 스페이스 선언이 있습니다.There are two XAML namespace declarations that are always within the root element of a XAML file. 다음 XAML 코드 예제와 같이 첫 번째는 기본 네임 스페이스를 정의합니다.The first defines the default namespace, as shown in the following XAML code example:

xmlns="http://xamarin.com/schemas/2014/forms"

기본 네임 스페이스는 ContentPage 와 같이 접두사가 없는 XAML 파일 내에 정의된 요소가 Xamarin.Forms 클래스를 참조하도록 지정합니다.The default namespace specifies that elements defined within the XAML file with no prefix refer to Xamarin.Forms classes, such as ContentPage.

두 번째 네임 스페이스 선언에서는 다음 XAML 코드 예제와 같이 x 접두사를 사용합니다.The second namespace declaration uses the x prefix, as shown in the following XAML code example:

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

XAML은 접두사를 사용하여 기본이 아닌 네임 스페이스를 선언하고 네임 스페이스 내에서 유형을 참조할 때 접두사를 사용합니다.XAML uses prefixes to declare non-default namespaces, with the prefix being used when referencing types within the namespace. x 네임 스페이스 선언은 XAML에 정의된 요소인 x가 접두사로 사용되며 XAML(특히 2009 XAML 사양)에 고유한 요소 및 특성에 사용되도록 지정합니다.The x namespace declaration specifies that elements defined within the XAML with a prefix of x are used for elements and attributes that are intrinsic to XAML (specifically the 2009 XAML specification).

다음 표는 Xamarin.Forms에서 지원하는 x 네임 스페이스 특성을 설명합니다.The following table outlines the x namespace attributes supported by Xamarin.Forms:

구문Construct 설명Description
x:Arguments 기본이 아닌 생성자 또는 팩터리 메서드 개체 선언에 대한 생성자 인수를 지정합니다.Specifies constructor arguments for a non-default constructor, or for a factory method object declaration.
x:Class XAML에 정의된 클래스의 네임 스페이스 및 클래스 이름을 지정합니다.Specifies the namespace and class name for a class defined in XAML. 클래스 이름은 코드 숨김 파일의 클래스 이름과 일치해야 합니다.The class name must match the class name of the code-behind file. 해당 구문은 XAML 파일의 루트 요소에만 나타날 수 있다는 것을 참고하십시오.Note that this construct can only appear in the root element of a XAML file.
x:DataType XAML 요소 및 해당 자식 요소가 바인딩할 개체의 유형을 지정합니다.Specifies the type of the object that the XAML element, and it's children, will bind to.
x:FactoryMethod 개체를 초기화하는 데 사용할 수 있는 팩터리 메서드를 지정합니다.Specifies a factory method that can be used to initialize an object.
x:FieldModifier 명명된 XAML 요소의 생성된 필드에 대한 액세스 수준을 지정합니다.Specifies the access level for generated fields for named XAML elements.
x:Key ResourceDictionary에서 각 리소스에 대해 고유한 사용자 지정 키를 지정합니다.Specifies a unique user-defined key for each resource in a ResourceDictionary. 키 값은 XAML 리소스를 검색하는 데 사용되며 일반적으로 StaticResource 태그 확장에 대한 인수로 사용됩니다.The key's value is used to retrieve the XAML resource, and is typically used as the argument for the StaticResource markup extension.
x:Name XAML 요소의 런타임 개체 이름을 지정합니다.Specifies a runtime object name for the XAML element. x:Name을 설정하는 것은 코드에서 변수를 선언하는 것과 비슷합니다.Setting x:Name is similar to declaring a variable in code.
x:TypeArguments 제네릭 유형 생성자에 제네릭 유형 인수를 지정합니다.Specifies the generic type arguments to the constructor of a generic type.

x:DataType 특성에 대한 자세한 내용은 컴파일 된 바인딩을 참조하십시오.For more information about the x:DataType attribute, see Compiled Bindings. x:FieldModifier 특성에 대한 자세한 내용은 필드 한정자를 참조하십시오.For more information about the x:FieldModifier attribute, see Field Modifiers. x:Arguments, x:FactoryMethodx:TypeArguments 특성에 대한 자세한 내용은 XAML의 인수 전달을 참조하십시오.For more information about the x:Arguments, x:FactoryMethod, and x:TypeArguments attributes, see Passing Arguments in XAML.

참고

위에 나열 된 네임 스페이스 특성 외에도 Xamarin.Forms 또한를 통해 사용할 수 있는 태그 확장은 x 네임 스페이스 접두사입니다.In addition to the namespace attributes listed above, Xamarin.Forms also includes markup extensions that can be consumed through the x namespace prefix. 자세한 내용은 XAML 태그 확장 사용합니다.For more information, see Consuming XAML Markup Extensions.

XAML에서 네임 스페이스 선언은 부모 요소에서 자식 요소로 상속됩니다.In XAML, namespace declarations inherit from parent element to child element. 따라서 XAML 파일의 루트 요소 네임 스페이스를 정의하면 해당 파일의 모든 요소가 네임 스페이스 선언을 상속합니다.Therefore, when defining a namespace in the root element of a XAML file, all elements within that file inherit the namespace declaration.

유형에 대한 네임 스페이스 선언Declaring Namespaces for Types

유형은 접두사가 있는 XAML 네임 스페이스를 선언하고 CLR(Common Language Runtime, 공용 언어 런타임) 네임 스페이스 이름을 지정하는 네임 스페이스 선언 및 선택적 어셈블리 이름을 사용하여 XAML에서 참조할 수 있습니다.Types can be referenced in XAML by declaring a XAML namespace with a prefix, with the namespace declaration specifying the Common Language Runtime (CLR) namespace name, and optionally an assembly name. 이것은 네임 스페이스 선언 내에서 다음 키워드에 대한 값을 정의하여 수행됩니다.This is achieved by defining values for the following keywords within the namespace declaration:

  • clr-namespace: 또는 using: – CLR 네임 스페이스는 XAML 요소로 표시를 위해 유형을 포함하는 어셈블리 내에 선언됩니다.clr-namespace: or using: – the CLR namespace declared within the assembly that contains the types to expose as XAML elements. 해당 키워드는 필수입니다.This keyword is required.
  • assembly= – 참조된 CLR 네임 스페이스를 포함하는 어셈블리입니다.assembly= – the assembly that contains the referenced CLR namespace. 해당 값은 파일 확장명이 없는 어셈블리의 이름입니다.This value is the name of the assembly, without the file extension. 어셈블리 경로는 어셈블리를 참조할 XAML 파일이 포함된 프로젝트 파일의 참조로 설정해야 합니다.The path to the assembly should be established as a reference in the project file that contains the XAML file that will reference the assembly. clr-namespace 값이 해당 유형을 참조하는 응용 프로그램 코드와 동일한 어셈블리 내에 있으면 해당 키워드를 생략할 수 있습니다.This keyword can be omitted if the clr-namespace value is within the same assembly as the application code that's referencing the types.

clr-namespace 또는 using 토큰을 해당 값과 분리하는 문자는 콜론인 반면, assembly 토큰을 해당 값에서 분리하는 문자는 등호입니다.Note that the character separating the clr-namespace or using token from its value is a colon, whereas the character separating the assembly token from its value is an equal sign. 두 개의 토큰 사이에 사용할 문자는 세미콜론입니다.The character to use between the two tokens is a semicolon.

다음 코드 예제는 XAML 네임 스페이스 선언을 보여줍니다.The following code example shows a XAML namespace declaration:

<ContentPage ... xmlns:local="clr-namespace:HelloWorld" ...>
  ...
</ContentPage>

또는 다음과 같이 작성할 수 있습니다.Alternatively, this can be written as:

<ContentPage ... xmlns:local="using:HelloWorld" ...>
  ...
</ContentPage>

local 접두사는 네임 스페이스 내의 유형이 응용 프로그램에 대해 로컬임을 나타내는 데 사용되는 규칙입니다.The local prefix is a convention used to indicate that the types within the namespace are local to the application. 또는 유형이 다른 어셈블리에 있는 경우 다음 XAML 코드 예제에서와 같이 어셈블리 이름도 네임 스페이스 선언에 정의해야 합니다.Alternatively, if the types are in a different assembly, the assembly name should also be defined in the namespace declaration, as demonstrated in the following XAML code example:

<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
  ...
</ContentPage>

다음 XAML 코드 예제에서와 같이 가져온 네임 스페이스에서 유형의 인스턴스를 선언할 때 네임 스페이스 접두사가 지정됩니다.The namespace prefix is then specified when declaring an instance of a type from an imported namespace, as demonstrated in the following XAML code example:

<ListView ...>
  <ListView.Behaviors>
    <behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
  </ListView.Behaviors>
</ListView>

사용자 지정 네임 스페이스 스키마를 정의 하는 방법에 대 한 내용은 Namespace 스키마를 사용자 지정 하는 XAML합니다.For information about defining a custom namespace schema, see XAML Custom Namespace Schemas.

요약Summary

이 문서에서는 XAML 네임 스페이스 구문을 소개하고 XAML 네임 스페이스를 선언하여 유형에 접근하는 방법을 보여줍니다.This article introduced the XAML namespace syntax, and demonstrated how to declare a XAML namespace to access a type. XAML은 네임 스페이스 선언에 xmlns XAML 특성을 사용하여 접두사가 있는 XAML 네임 스페이스를 선언하여 XML에서 유형을 참조할 수 있습니다.XAML uses the xmlns XML attribute for namespace declarations, and types can be referenced in XAML by declaring a XAML namespace with a prefix.