반응형
성능 개선 - Compiled Binding
Xamarin 의 핵심 아키텍처는 Model-View-ViewModel
패턴입니다. 따라서 View
와 ViewModel
을 연결할 때 Data Binding
을 집중적으로 사용하게 됩니다. 그리고 Data Binding
은 View
의 속성과 ViewModel
의 속성을 연결하고 연결된 속성을 해석하기 위해 Reflection 기술을 사용하는데, Reflection 기술은 런타임에 많은 리소스를 소비합니다. 따라서 컴파일할 때 바인딩될 속성 타입을 명시해서 성능을 개선할 수 있습니다. 이를 Compiled Binding
이라 합니다.
Compiled Binding
를 진행하기 위해선 XAML 코드가 컴파일 되어야 합니다. 이 글을 따라 XAML 코드가 컴파일되도록 설정해주시길 바랍니다. 그리고 BindingContext
가 설정되는 VisualElement
에 아래와 같이 x:DataType
을 지정하면 됩니다.
<StackLayout x:DataType="local:HslColorViewModel">
<StackLayout.BindingContext>
<local:HslColorViewModel Color="Sienna" />
</StackLayout.BindingContext>
<Slider Value="{Binding Hue}" />
<Slider Value="{Binding Saturation}" />
<Slider Value="{Binding Luminosity}" />
</StackLayout>
만약 바인딩에 문제가 있을 시, 컴파일 에러가 발생하게 됩니다.
DataTemplate 에 Compiled Binding 적용
<DataTemplate x:DataType="local:NamedColor">
<StackLayout>
<Label Text="{Binding FriendlyName}" />
</StackLayout>
</DataTemplate>
Compiled Binding 내부에 기본 Binding 사용
<StackLayout x:DataType="local:HslColorViewModel">
<StackLayout.BindingContext>
<local:HslColorViewModel Color="Sienna" />
</StackLayout.BindingContext>
<BoxView Color="{Binding Color}"
VerticalOptions="FillAndExpand" />
<!-- x:DataType 에 x:Null 을 적용하면 기본 Binding 으로 전환할 수 있습니다. -->
<StackLayout x:DataType="{x:Null}"
Margin="10, 0">
<Slider Value="{Binding Hue}" />
<Slider Value="{Binding Saturation}" />
<Slider Value="{Binding Luminosity}" />
</StackLayout>
</StackLayout>
반응형
'Develop > MAUI 가이드' 카테고리의 다른 글
[.NET] .NET 통합과 MAUI 란? (6) | 2020.08.06 |
---|---|
[Xamarin] ResourceDictionary 깔끔하게 정리 (0) | 2020.08.06 |
[Xamarin] 성능 개선 - XAML 컴파일 (0) | 2020.08.06 |
[Xamarin] TypedDataTemplateSelector (0) | 2020.08.05 |
[Xamarin] MvvmCross 데이터 바인딩 (0) | 2020.06.17 |
꾸준히 노력하는 개발자 "김예건" 입니다.