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

UX 반응형 표현식 (Reactive Expressions)

UX 마크업은 모든 오브젝트의 속성에서 사용할 수 있는 간단하고 강력하며 확장 가능한 reactive expression (반응형 표현식) 구문을 제공합니다. 이 문서는 어떻게 작동되는지 설명합니다.

UX 표현식(expressions) 는 시험적인 기능으로 변경될 수 있습니다. UX 마크 업에서 이것을 사용한다면, 업데이트 할 때 changelog 를 잘 살펴보십시오. Uno 에서 이 기능을 사용할 예정이라면, 몇 가지 큰 API 변경이 계획 되어 있다는 것을 알아 두십시오.

요약

UX Markup 의 Reactive Expressions(반응형 표현식들) 은 여러분이 리터럴(literals) , 자원(resources) 및 지원되는 모든 바인딩들(bindings) 을 표현식(expressions)에 결합할 수 있게 합니다. 이런 표현식(expressions)들은 바인딩(bindings) 들이 새 값을 생성하는 경우 푸시 기반으로 자동 업데이트됩니다.

다음 예제에서는 슬라이더를 사용하여 사각형의 위치를 ​​제어합니다.

<Rectangle X="spring({Property slider.Value})*30% + 50%" Alignment="TopLeft" Width="32" Height="32" />
<Slider ux:Name="slider" Minimum="-1" Maximum="1" />

특히 사각형의 X 오프셋에 대한 표현식에 유의하십시오.

spring({Property slider.Value})*30% + 50%

즉, 사각형이 50% 오프셋되고, spring 물리 함수를 통해 -30% 에서 30% 사이의 값이 오프셋됩니다.

바인딩 (Bindings)

바인딩은 환경의 변화를 감지하고, UX 표현식(expression)에 영향을주는 새로운 값을 생성하는 오브젝트입니다. 모든 바인딩 타입들은 표현식들의 일부로 사용될 수 있습니다.

  • 데이터 바인딩 ( {path.to.data} )
  • 속성 바인딩 ( {Property someObject.SomeProperty} 또는 {Property SomeProperty} )
  • 리소스 바인딩 ( {Resource resourceKey} )

인라인 표현식( {= expression} )들도 중괄호 구문을 사용하지만, 이것들은 아직 기술적으로는 바인딩이 아닙니다.

연산 (Arithmetic)

UX 표현식은 단위( %px 같은)들 존재여부와 관계없이, 스칼라 혹은 벡터 값을 더하기 ( + ), 빼기 ( - ), 곱하기 ( * ) 및 나누기 ( / ) 할 수 있습니다.

<Panel Width="{foo} * 100% + 40%" />
<Slider Margin="{foo}" />

연산은 동일한 단위의 값 사이에서, 또는 단위가 있는 하나의 값과 단위가 없는 하나의 값 사이에서 수행될 수 있습니다. 예를 들어 10% + 10px 은 연산할 수 없습니다. 이렇게 하면 런타임 오류가 발생합니다.

벡터 (Vectors)

벡터(최대 4개 컴포넌트들)들은 콤마 , 연산자를 사용하여 구성될 수 있습니다.

<Panel Margin="10, {spacing}, 10, {spacing} / 2" />

벡터는 X -> XXXX , XY -> XYXYXYZ -> XYZ1 규칙에 따라, 더 짧은 벡터에서 적절한 크기로 자동 확장될 수도 있습니다.

<Panel Margin="{spacing}" />

문자열(strings) 과 텍스트(text)

string 속성( <Text Value = "" 같은)들은 다른 속성들과 다르게 파싱(구문 분석) 됩니다. 문자열 속성은 중괄호 내 피연산자들을 제외하고, 리터럴 문자열(literal string)로 처리됩니다.

<Text>Hello, {username}!</Text>

또는, 동등하게:

<Text Value="Hello, {username}" />

계산된 표현식을 string 값에 포함 시키려면, {= expression} 구문을 사용할 수 있습니다. 예를 들면 다음과 같습니다.:

<Text>Hello, {= toLower({username})}!</Text>

함수들 (functions)

참고: 현재 함수들 세트는 실험적이며 변경 될 것입니다. 앞으로의 changelogs 변화에 ​​주목하십시오.

현재 사용할 수 있는 함수들은 다음과 같습니다.

  • max(a, b) - 최대 두 개의 숫자 값을 반환합니다 (벡터 인 경우 구성 요소 별 구성 요소).
  • min(a, b) - 최소 두 개의 숫자 값을 반환합니다 (벡터 인 경우 구성 요소별로 구성 요소).
  • toLower(s) - 주어진 문자열의 소문자 버전을 반환합니다.
  • toUpper(s) - 주어진 문자열의 대문자 버전을 반환합니다.
  • width(element) - 다른 UX 요소의 레이아웃 결과로 계산 된 너비를 반환합니다.
  • height(element) - 다른 UX 요소의 레이아웃으로 계산 된 높이를 포인트 단위로 반환합니다.
  • spring(value) - 주어진 값을 추적하는 스프링

참고: 레이아웃 함수( width(element) , height(element) )들에 대한 입력으로, 레이아웃 속성( Width , Height , Margin , Padding 같은)들을 사용하는 것을 피하십시오. 이렇게 하면 원치않은 이상한 동작이 발생할 수 있습니다.:

<Panel Width="10" Height="width(this)" />

results matching ""

    No results matching ""