MY MEMO

[UWP] 개념 공부 본문

STUDYING/C#

[UWP] 개념 공부

l_j_yeon 2017. 8. 18. 22:15

stack Panel

: 자식요소를 행이나 열로 나열하는데 매우 간단한 컨트롤

 Orientation = "Horizontal" or "Vertical"


Grid

: 컨트롤의 열과 행을 배분하고자 할 때 사용


IUICommand

: Represent Command in a context menu or message dialog box 

+) https://docs.microsoft.com/en-us/uwp/api/windows.ui.popups.iuicommand


Async

비동기 : 동시에 일어나지 않음 -> 순서가 있음


async를 쓰면 Task가 들어가고

async Task<return할 값>


await라는 걸 써서 그 함수가 다 끝나기 이전가지 실행하지 않음

+) https://msdn.microsoft.com/ko-kr/library/hh191443(v=vs.110).aspx


----------------------------------------------------------------------------------------------------

출처 : https://www.youtube.com/watch?v=0gE3HL_DULM


Windows10은 Windows8과 많이 다르다


Windows10에서 개발을 하려면 개발자 모드를 이용하여 권한을 풀어줘야하는데 


win+i -> 업데이트 및 복구 -> 개발자 모드를 풀어주면 된다


universal window platorm 은 기존에 가능한 xaml directX html .net c++ wwa가 가능할 뿐만 아니라


ios android web win32까지 개발이 가능하도록 만들었다


Canvas


- canvas란 layout control안에 절대좌표를 이용해서 그림 -> flexible한 ui에서는 잘 사용되지 않음

- rectangle /  Ellipse /  Polygon


StackPanel


- ui의 elemet를 배치할때 사용 (Vertical(default), Horizontal)


Grid


- 자신이 가로 세로를 나눠서 그 안에 ui를 배치할 수 있음


WrapGrid


- 자동으로 개행되는 기능 (word에서도 보면 화면에 끝에가면 자동으로 줄이 넘어간다->word wrap)

- flexible한 ui에 매우 적절


ScrollViewer


- 내용이 많은데 scroll이 생기지 않을때 사용


Viewbox


-Viewbox의 사이즈에 따라서 안의 내용의 사이즈도 달라짐


+) obejct의 개수가 많아지게 하려면 wrapgrid를 사용

   크기가 변경되게 하려면 viewbox를 사용



RelativePanel(새로 추가된 기능)


- 상대적인 위치값

ex) a box는 b box 오른쪽에 c는 아래쪽에 -> 화면이 변경되어도 모양이 유지


Button


- repeatbutton : 사용자가 눌렀다가 놓을 때까지 반응 (매 프레임마다 값을 반환)

- togglebutton : on / off 버튼 처럼 두가지 상태를 전환할 수 있는 버튼


+) 반응형 웹은 보통 메뉴가 세로로 있음 (가로로 있을 때 줄이면 메뉴가 보여지지 않음)

   세로로 생긴 메뉴는 햄버거 메뉴라고 부름 (누르면 커졌다가 다시 작아지는 메뉴)


SplitView


- 햄버거 메뉴를 지원해주는 코드 

- Compact가 들어가면 작은 메뉴가 보이는지 보이지 않는지

- IsPanelOpen 은 메뉴가 보이는지 보이지 않는지의 차이


ex)



Appbar


- 앱을 모아두는 bar

- isopen은 항상 나와있는 상태를 의미


Networking


daum에서 search api를 가져온 후 parsing 하는 과정 중 networking 사용 방법


1. daum api에서 api key와 주소를 가져온다


2. 아래와 같이 코드를 구현한다.


+) async는 비동기인데 주로 network이나 file download같은 오래 걸리는 작업을 효율적으로 처리하기 위함이다.

   await와 async는 쌍으로 나와야 한다 -> 아니면 오류


3. string을 xaml로 parsing

using  System.Xml.Linq;

XDocument xDoc = XDocument.Parse(responseBody);


4. 담을 class를 생성


=> Linq의 개념을 알아야 다음 단계로 넘어갈 수 있음


Linq란? 객체 query 기술 


item으로 검색하면 책 한권 단위로 가져올 수 있음

새로운 class를 만들고 그 BookItem이라는 class에 각각의 속성을 집어넣음

xaml이 끝날때까지 진행


저렇게까지만 코드를 짜면 books에 객체 배열이 들어가 있느냐 -> 아니다


var booklist = books.ToList();

를 실행 해줘야 들어간다


listBooks.ItemSource = booklist;

그 list를 ItemSource로 넣었다


=> Adaptive 기법? 그때 그때 상황에 따라서 예쁘게 보여주는 것 (ex) 가로 / 세로)

   Tailor Design 기법? 각각의 device마다 ui를 따로 만들어놓음

Tailor 기법의 예제)

아래와 같이 물리적인 사이즈를 정해놓음


+) cross platform이란? 하나의 platform이 아닌 여러개의 platform을 지원하는 것(multi platform)


=> Visual State : inch를 사용하는 것을 권장 (pixel은 경우의 수가 많이 생겨서 정확하지 않음)


VisualStateManager.GoToState(this,state,true);

: device에 맞게 선택되게 해주는 코드


=> Data Binding : Binding을 ui에 붙이면 data가 다다닥 붙는 형식 (진짜 멋진 기술)


+) mvvm pattern : sample로 hard coding을 할 때 좋음 

 coding을 하는 기술을 이야기함


Data Binding의 종류

1. one time : 한번 데이터를 보여주고 넘어감

2. one way : 객체가 변경되었을 때는 ui가 변경 but ui가 변경되었을 때 객체는 변경되지 않음

3. two way : 객체 or ui를 고치면 ui or 객체가 변경


=> SQLite : 거의 모든 모바일 플랫폼에서 사용되는 sql -> 보통 c++을 지원

SQLitePCL은 객체스럽지 않음 & string으로 되어있음 -> runtime 오류가 발생할 수 있음

but 사람들이 많이 선호 (익숙한 명령어이기 때문)




SQLite 시작하기


1.SQLitePCL 설치

+) App.xaml.cs -> global area(전역)

+) App.xaml.cs에 생성


   public static SQLiteConnection SQLCon; //Connection 객체 생성 

   SQLCon = new SQLiteConnection("Master.db"); 

   //현재 확실한 경로를 주지 않았기 때문에 app이 생성되어있는 곳이 있음

   //즉 앱을 삭제하면 db도 삭제됨

   string sql =@"sql 명령어";

   var satement = SQLCon.Prepare(sql);

   statement.Step();

-> 이 코드가 실행되면 connection의 생성자가 생김 -> 이 의미는 app이 실행될때마다 이 코드가 실행

if master database가 존재하지 않으면 생성 & if table이 없으면 생성 & 연결


+) data는 각 device에 저장되기 때문에 computer에서 저장하더라도 mobile에서는 저장이 되지 않음


+) MainPage.xaml.cs

public SQLiteConnection SQLConn = App.SQLCon; //App영역에서 이 변수를 가져오겠다 라는 의미



동영상에 있는 것을 가져온 것인데 대충 어떻게 사용하는지 구조만 보면 될 것 같다.

+) book.Step(); //실제로 query가 실행되는 코드


+) select 예시



+) delete 예시



+) update 예시



+) Frame.Navigate(typeof(StoredBook),null); //페이지 이동 -> 새로운 ui 생성해서 (StoredBook이 새로운 ui)


=> ToastNotification : window에 알림 띄우는 기능

using Windows.UI.Notifications;

-> 여러가지 Toast가 있음 (Schedule 된것도!) 그러니까 조금 알아보기!


Toast를 띄우면 windows10의 Action Center에 남음 -> window에서 message누르면 오른쪽에서 열리는 창

따라서 간단한 것은 popup에 올리면 됨

Toast가 짧은 시간안에 여러개의 action이 일어나면 popup을 사용하는 것이 좋음

왜? Toast는 나타난 후 다시 사라지는 것에 시간이 조금 걸림

'STUDYING > C#' 카테고리의 다른 글

[UWP] Custom Checkbox  (0) 2017.08.19
[UWP] Drag and Drop Image  (0) 2017.08.19
[UWP] Appointment App  (0) 2017.08.18
[UWP] Suggestion Box  (0) 2017.08.18
[UWP] Weather Application  (0) 2017.08.17
Comments