원본: https://www.fusetools.com/docs/ux-markup/ux-markup

UX 마크 업 참조

UX 마크업은 유저 인터페이스, 레이아웃, 효과(effects) 및 모션(motion) 들을 표현하기 위한 XML 기반 언어입니다. UX 마크업은 fuse의 필수적인 부분입니다.

이 장에서는 UX 마크업 언어의 내장 구문(built-in syntaxes) 및 속성(attributes)의 의미에 대해 설명합니다.

이 장에서 다른 topcis를 탐색하려면 왼쪽 메뉴를 사용하십시오.

개요

오브젝트 생성

UX 마크업 요소의 기본 기능은 특정 클래스 의 오브젝트를 생성(인스턴스화) 하는 것입니다. 예를 들면, 다음 코드는 App 및 Rectangle 클래스의 인스턴스를 만들고 Rectangle을 App의 자식으로 만듭니다.

<App>
    <Rectangle Color="Blue" />
</App>

요소 태그의 이름은 프로젝트에서 액세스 할 수 있는 Uno 클래스 의 이름이어야 합니다. 위의 예에서 AppRectangle 은 Fuse 라이브러리 내에 미리 정의된 클래스입니다.

프로젝트에서 Fuse 라이브러리들을 액세스 할 수 있게 하려면, .unoprojPackages 섹션에 "fuse" 가 추가되어 있어야 합니다.

계층 구조 만들기

하나의 요소(자식요소)가 UX 마크업에서 다른 요소(부모요소) 안에 배치되면, 바깥쪽 요소를 부모 요소 라고 부르며, 안쪽 요소를 자식 요소 라고 합니다.

<Grid Rows="1*,1*">
    <Rectangle Color="Blue" Margin="10" />
    <Rectangle Color="Blue" Margin="10" />
</Grid>

기본적으로 UX 마크업은 부모 요소에서 자식 요소를 바인딩 할 수 있는 적합한 속성을 찾습니다.

주어진 자식 요소에 대해 이 동작을 사용하지 않으려면 ux:AutoBind="false" 를 지정하면 됩니다. 이렇게 하면 나중에 로직으로 앱에 첨부 할 수 있는 느슨한 오브젝트가 앱 내에 생성됩니다.

부모의 특정 속성에 바인딩하려면 ux:Binding="TheProperty" 를 지정할 수 있습니다. 이렇게 하면 요소에 대한 자동 바인딩이 비활성화되고 대신 TheProperty 에 바인딩 합니다.

재사용 가능한 클래스들 만들기 (ux:Class)

UX 요소 트리는 ux:Class 속성을 추가함으로써 재사용 가능한 클래스(컴포넌트)로 변환 될 수 있습니다.

<Panel ux:Class="MyNamespace.MyComponent" Color="Yellow" >
    <WhilePressed>
        <Scale Factor="2" Duration="0.3" Easing="BackOut" />
    </WhilePressed>
</Panel>

이렇게 하면 MyNamespace 네임 스페이스에 MyComponent 라는 새 서브클래스 Panel 이 만들어집니다. 네임 스페이스는 선택 사항이지만, 다른 프로젝트에서 다시 사용할 수 있도록 컴포넌트를 생성할때, 이름 충돌을 피하기 위해 권장됩니다.

클래스가 한번 만들어지면, 내장 클래스와 마찬가지로 인스턴스화 될 수 있습니다.

<MyNamespace.MyComponent />

ux:Class 는 새로운 루트 범위(root scope)를 만듭니다. 즉, 클래스 내부의 노드들은 클래스 외부의 이름들( ux:Name )에 액세스 할 수 없습니다. 이것은 디펜던시들(dependencies)이 명시적으로 주입되어져야 함을 의미합니다.

App 태그

App 태그는 여러분 앱 프로젝트의 최상위 루트(root) 입니다.

<App>
    <!-- your app goes here -->
</App>

모든 App 태그는 암묵적으로 포함하는 파일의 파일 확장명을 제외한 이름과 같은 ux:Class 클래스입니다. ux:Class 를 수동으로 지정하여 여러분 앱 클래스에 다른 이름을 지정할 수도 있습니다.

<App ux:Class="MyNamespace.MyApp" />

App 태그를 포함하지 않은 프로젝트들은 실제 앱을 생성하지 않는, 다른 프로젝트들에 의해 참조될 수 있는 컴포넌트들의 패키지들이 됩니다.

네임 스페이스 (Namespaces)

UX 마크업은 XML 네임 스페이스( xmlns )를 지원하지만, 코드를 간결하게 하기 위해, 적절한 기본값들로 설정되어 있습니다. UX 마크업 파일들에서 xmlns 가 사용된 것을 거의 볼 수 없는 이유입니다.

기본 XML 네임 스페이스 ( xmlns )는 기본적으로 모든 표준 Fuse 네임 스페이스들을 가리키고 있으므로, 클래스 (예: AppRectangle )는 full namespace qualifier 없이 사용할 수 있습니다.

다른 클래스들의 경우 태그에 직접적으로 클래스의 full qualified name 을 직접 사용할 수 있습니다.

<App>
    <MyNamespace.MyClass />
</App>

또는 범위(scope)에 대한 커스텀 xmlns 선언을 지정할 수 있습니다.

<App xmlns:m="MyNamespace">
    <m:MyClass />
</App>

UX 파일 포함하기 (ux:Include)

아래와 같이 ux:Include 를 사용하여, 또 다른 UX 파일 하나의 내용을 포함 할 수 있습니다.:

<ux:Include File="Resources.ux" />

ux:Include글꼴 , 이미지 , 색상 등과 같은 정적 리소스들을 별도의 파일로 선언하여 사용할때 유용합니다.

그러나 여러분 뷰(view)의 일부를 파일들로 분할하데 사용하는 것은 권장되지 않습니다. 보다 나은 접근법은 컴포넌트 생성하기 기사를 참조하십시오.

results matching ""

    No results matching ""