2016년 3월 27일 일요일

UWP 본격 탁상시계 만들기1

윈도우 폰을 뭔가 유용하게 사용하기 위해 앱을 하나 만들기로 하였습니다.

가장 쉬운게 시계 만들기지요 ㅎㅎ

결국 최종으로 만들 앱은 아래의 앱 입니다.



화면에 큼지막하게 날짜 시간 날씨가 표시되는 매우 간단한 앱이지요..

각 단계별로 해당 앱을 만들기 위한 방법을 설명합니다.


0. Visual Studio를 실행하고 UWP 프로젝트를 생성합니다.




1. 날짜, 시간 표시를 위한 라벨 UI에 추가 하기



 MainPage.xaml (메인뷰)에 날짜를 표기할 TextBlock 두개를 추가 합니다.

도구 상자를 통해서 드래그 해서 추가하거나 직접 입력하여 추가 할 수 있습니다.


2. 타이머 추가하기

기존에 C# 네이티브 개발을 하셨다면 Windows.Forms의  Timer를 사용하시거나Thread 쪽 타이머를 사용하셨겠지만 Windows RT Framework 에서는 이를 사용할 수 없습니다.

Windows RT 에서는 DispatchTimer라는 타이머 클래스를 제공합니다.

MainPage.xaml.cs 파일을 열어 생성자에 Loaded / UnLoaded이벤트를 추가 합니다.
이는 메인페이지가 로드 되었을때 라벨에 날짜 텍스트를 뿌려주기 위함입니다.




이벤트 핸들러를 작성합니다.

Loaded 이벤트에 코드를 추가 합니다.




Timer tick 이벤트를 추가 합니다.



날짜와 시간을 아까 생성했던 텍스트 라벨에 뿌려 주도록 코딩합니다.




Unloaded 이벤트에 타이머를 정지하도록 코딩합니다.

윈도우 폰을 연결하고 F5키를 누르면 자동으로 배포되어 자동으로 실행 됩니다.

댓글 1개:

  1. uwp 폼에서 Texbox를 만들어서 Load이벤트를 하나 생성 합니다.
    생성하면 스크립트 안에 자동으로 Textbox_Loaded가 생성 되는데
    이 이벤트 함수에 접근이 안됩니다 ㅠㅠ
    예)
    private void Textbox_Loaded(object sender, RoutedEventArgs e)
    {
    //초가 한번만 들어가고 더이상 출력되지 않씁니다..ㅠㅠ
    Textbox.Text= DateTime.Now.Seconds.ToString();
    //초가 나옵니다
    }

    이렇게 있으면 추가적으로
    private void Load()
    {
    Textbox_Loaded(); //<<이 이벤트 함수에 접근이 안되더라구요 ㅠㅠ
    }

    그리고 추가적으로 Load라고 하나 만들었지만 혹시
    유니티를 아신다면 Update() 나 혹시 코루틴 같은 쓰레드가 없을까요?

    답글삭제