개발로그

[Xamarine Form] 1/117 ~16/117

원스텝퍼더 2023. 5. 30. 06:34

C#을 배우려고 했던 이유는 Xamarine으로 크로스플랫폼 앱을 만들어 보기 위함이었습니다.
다만 강의가 많아 다 듣지 못했으나 언제까지고 다 들을 때 까지 기다리기만 하다 보면 정작 
Xamarine을 하는 날이 너무 늦게 올까봐 일단 시작합니다.
 

Section 1 . Getting started 

1. introduction : 강의 설명
2. What is Xamarine Form : 자마린 폼은 자마린 안드로이드와 자마린IOS의 보편적인 부분이고 특정 기능을 개발하려면 Xamarine.Android 혹은 Xamarine.IOS를 배워야 한다는 것을 알게 되었음.
3. Setting Up the Development Environment : VS 환경설정
4. Creating a Xamarin Forms App Using Visual Studio : Visual Studio 기본 세팅 방법
5. Creating a Xamarin Forms App Using Xamarin Studio : Mac 유저용 스킵
6. Your First Xamarin Forms App: 
    - page Detail : Content, Master detail, Navigation. Carousel
    - Layout 은 xaml로 잡는 듯 하다. html 테그처럼 태그가 존재하고 그 속성을 넣는 것
    - action : Clicked = "" 로 속성을 선언하면 자동 탭으로 handle action을 cs파일에 적는다.
7. How Xamarin Works : 
    - mono 라는 프로그래밍 언어가 Xamarine이 되었고 C# .net 으로 작성한 코드는 Android가 이해할수 있는 언어로 변환되며, IOS의 경우 변환방식 공개를 허용하지 않기 때문에 IOS를 사용하는 장치에서 변환을 한다
8. Course Structure : 이 다음 세션에서 배울 방식 설명

Section 2. XAML essentials

10. Introduction : 스킵
11. XAML vs Code : XAML과 C# 코드로 서로 같은 레이아웃 짜는 방식
    - code를 사용하는 이유는 동적인 컴포넌트를 구현하고자 할때 사용
12. Content Property :
    - content 컴포넌트는 1개의 자식만을 둘 수 있다. 그렇기 때문에 stackLayout을 사용해야한다.
    - class 를 검색하여 propery 종류를 찾고 그에대한 설명을 공식 document에서 찾아서 설명하는데
      잘 이해하지 못함.
13. Accessing Elements in Code-behind :
    - action valueChanged 쓰고 엔터를 두번 치면 C# 코드로 들어온다.
    - XAML에 속성으로 x:Name="label" 을 주면 C#에서 이 이름으로 namespace를 가진다.
    - 위에서 선언한 namespace는 코드에서 바로 lable.Text = String.Format( "This is new Value : {0}",e.newValue);사용
14. Data Binding :Markup extension 을 사용한 UI component와 Data Value 바인딩
    - 선언방식은 XAML에 바인딩하고 싶은 attribute 예를들면
        Text = "{ Binding Source = { x:Reference xName}, Path = Value, StringFormat = 'Value is {0:F2}'}"
    = Binding Source는 XAML에서 선언한 x:Name 을 쓰되 Markup Extension을 사용해 작성함
    = Path는 그 x:Name에 해당하는 컴포넌트의 Attribute 이며
    = StringFormat은 말그대로 어떻게 표현할지 씀
15. Binding Context : 
    - 위에서 선언한 <Label></Label> 에 다른 attribute Opacity를 사용해 투명도를 작성
    = Opacity = "{Binding Source={x:Reference slider} , Path="value"
    = String Format을 사용하지 않는 이유는 Opacity는 숫자값이 필요하기 때문에.
    - 바인딩의 공통부분을 합쳐줄 수 있음. BindingContext="{Binding Source = {x:Reference slider }}" 를 통해 공통 바인딩가능
   = 이렇게 slider를 바인딩 했다면 path가 필요없이 Reference value를 사용가능
   - 새로운 컴포넌트 BoxView
   - 새로운 컴포넌트에도 같은 바인딩을 사용할 땐, 부모 컴포넌트에 바인딩을 달 수가 있다.그럼 상속이 된다.