[Fuse] 더 강력한 UX 마크!UX Reactive Expressions
실험적인 기능이 있기 때문에 사이트에 다음과 같은 주의사항이 있으니 꼭 찾아보세요.
Note that UX expressions is an experimental feature and is subject to change. If you're using this in UX markup, please keep an eye on the changelog when updating. If you're using this feature from Uno, be aware that several large API changes are planned.
실험 기능에 따라 UX 표현식이 변경될 수 있습니다.UX Markup에서 이것을 사용하면 업데이트 시 변경된 내용(change elog)을 확인하십시오.Uno에서 이 기능을 사용할 경우 API도 변경될 수 있습니다.
바인딩
참고로 다음과 같은 세 가지 사용 방법이 있다.
{path.to.data}
{Property someObject.SomeProperty}
또는 {Property SomeProperty}
{Resource resourceKey}
그럼 각자의 사용법을 소개하겠습니다.
산술
UX 표현식은 단위(% 또는 px 등) 여부와 관계없이 덧셈(+), 뺄셈(-), 곱셈(*) 및 나눗셈(/)을 수행할 수 있습니다.
sample01.ux
<App>
<!-- StackPanelのローカル名を「panel」と指定 -->
<StackPanel ux:Name="panel" Width="100%">
<!--
Rectangleのローカル名を「rect」に指定
Widthを「panel」のWidthの半分に指定
-->
<Rectangle ux:Name="rect"
Width="width(panel) / 2"
Height="40" Color="Red" Margin="5" />
<!-- Widthを「rect」のWidthの半分に指定 -->
<Rectangle
Width="width(rect) / 2"
Height="40" Color="Blue" Margin="5" />
</StackPanel>
</App>
아래와 같이 빨간색의 사각형은 화면 너비의 절반(50%), 파란색의 사각형은 빨간색의 사각형 너비의 절반(25%)을 나타낸다.벡터
쉼표(,)를 사용하여 벡터(최대 4개)를 구성할 수 있습니다.
sample02.ux
<App>
<StackPanel>
<!-- Sliderのローカル名を「slider」に指定 -->
<Slider ux:Name="slider" />
<!-- PanelのPadding属性のベクトルにsliderの値をリアルタイムで反映 -->
<Panel Padding="10, {Property slider.Value}, 10, {Property slider.Value} / 2">
<Rectangle Color="#FFCC00" Width="100%" Height="30" />
</Panel>
</StackPanel>
</App>
벡터에는 다음과 같은 규칙이 있을 수 있습니다.
sample03.ux
<App>
<StackPanel Padding="10">
<!-- Sliderのローカル名を「slider」と指定 -->
<Slider ux:Name="slider" />
<!-- 「slider」と指定された要素の値をリアルタイムで反映 -->
<Text Value="{Property slider.Value}" Alignment="TopCenter" />
</StackPanel>
</App>
다음과 같이 슬라이더의 프로세서를 시작하면 값의 변화가 실시간으로 Text에 반영됩니다.UX 표현식에 사용할 수 있는 함수(Function)
또한 UX 표현식은 다음과 같은 함수를 조합할 수 있습니다.
<App>
<DockPanel>
<Grid Rows="auto, 5*, 5*">
<!-- Sliderに関連する要素を生成 -->
<Grid Columns="1*,7.5*,1.5*" Color="#333" Padding="10">
<Text Value="0%" Alignment="CenterLeft" Color="#DDD" />
<Slider ux:Name="slider" Value="1" Minimum="0" Maximum="1" />
<Text Value="100%" Alignment="CenterRight" Color="#DDD" />
</Grid>
<!-- Alphaに関連する要素を生成 -->
<Grid Columns="2*,8*" Color="#DDDDDD" Padding="10" Margin="5">
<Text Value="Alpha" Alignment="VerticalCenter" />
<!--
max(a,b) : sliderの値と0.5中に大きい値を透明度に適用
-->
<Rectangle
Opacity="max({Property slider.Value}, 0.5)"
Width="100%" Height="100%" Color="#4894E5" />
</Grid>
<!-- Scaleに関連する要素を生成 -->
<Grid Columns="2*,8*" Color="#DDDDDD" Padding="10" Margin="5">
<Text Value="Scale" Alignment="VerticalCenter" />
<!--
四角の中心を基準にサイズが変わるように Anchor(50%, 50%)を制定
max(a,b) : sliderの値と0.5中に大きい値 * 100%を横幅と縦幅に適用
-->
<Rectangle
Anchor="50%, 50%"
Width="spring(max({Property slider.Value}, 0.5)) * 100%"
Height="spring(max({Property slider.Value},0.5)) * 100%"
Color="#CC0000" />
</Grid>
</Grid>
</DockPanel>
</App>
※ 푸른 사각의 투명도와 붉은 사각의 크기는 50% 이하로 변하지 않습니다.
이렇게 UX 표현식을 사용하면 UI Markup에 속성을 첨부해 변수 처리를 하거나 데이터와 속성의 값을 다른 UX 요소에 실시간으로 반영할 수 있어 효율적인 코드를 쓸 수 있다.
앞으로 어떤 방향으로 확장될지 기대가 됩니다!
Reference
이 문제에 관하여([Fuse] 더 강력한 UX 마크!UX Reactive Expressions), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/siriz/items/83c6e9d1c7ba0acf53b4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)