Korea Evangelist

Developer & Platform Evangelism, Microsoft Korea

February, 2011

  • Korea Evangelist

    모다의 윈도우폰7 뚝딱 팩토리(3)-윈도우폰7의 UI 구성요소(Controls)

    • 0 Comments

     

    모다의 윈도우폰7 뚝딱 팩토리(3)-윈도우폰7의 UI 구성요소(Controls)

     

    한국마이크로소프트에서 초급 스마트폰 ���발자 분들을 위해 공개하는 모다의 윈도우폰7 뚝딱 팩토리 세번째 영상! 윈도우폰의 UI를 구성하는 컨트롤에 대해서 알아보고 버튼을 추가하며, 이를 이용해 페이지 전환예제를 구현합니다.

     

    이번 예제에서 사용된 예제 소스코드는 아래를 참고해주세요. 미소

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;

    namespace navigation
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("Navigation");
            }

            private void hyperlinkButton1_Click(object sender, RoutedEventArgs e)
            {
                NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.RelativeOrAbsolute));

            }
        }
    }

     

  • Korea Evangelist

    모다의 윈도우폰7 뚝딱 팩토리(4)-윈도우폰과 인터넷 연결하기

    • 0 Comments

     

    모다의 윈도우폰7 뚝딱 팩토리(4)-윈도우폰과 인터넷 연결하기

     

    한국마이크로소프트에서 초급 스마트폰 개발자 분들을 위해 공개하는 모다의 윈도우폰7 뚝딱 팩토리 네번째 영상!

    인터넷과 연결해서 웹에 있는 데이터를 활용하는 법에 대해 알려드리는 시간입니다.

    이번 예제에서 사용된 예제 소스코드는 아래를 참고해주시고 인터넷과 연결할때 사용되는 클래스인 WebClient 클래스에 대한 자세한 정보는 MSDN 라이브러리를 방문해 주시기 바랍니다. 미소

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    using System.Text.RegularExpressions;

    namespace blogView
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                WebClient rssReader = new WebClient();

                rssReader.DownloadStringAsync(new Uri("http://blogs.msdn.com/b/jinhoseo/rss.aspx"));
                rssReader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(rssReader_DownloadStringCompleted);
            }

            void rssReader_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
            {
                // throw new NotImplementedException();
                //rssView.Text = e.Result;
                MessageBox.Show("Download Completed");
                rssView.Text = Regex.Replace(e.Result, @"<(.|\n)*?>", string.Empty);
            }
        }
    }

     

  • Korea Evangelist

    모다의 윈도우폰7 뚝딱 팩토리(5)-데이터 연동하고 리스트 출력하기

    • 0 Comments
    모다의 윈도우폰7 뚝딱 팩토리(5)-데이터 연동하고 리스트 만들기

     

    한국마이크로소프트에서 초급 스마트폰 개발자 분들을 위해 공개하는 모다의 윈도우폰7 뚝딱 팩토리 다섯번째 영상!

    폰에 저장되어있는 데이터들을 활용하여 리스트를 표시하고 리스트를 출력할 경우 해당 메뉴에 대한 자세한 내용이 표시되도록 하는 예를 보여드립니다.

    이번 예제는 대부분의 작업이 소스코드 수정이 아닌 디자이너에서 이루어지므로 별도의 소스코드는 없으며 조금 더 고급 프로그래밍에 대한 예제를 찾으시면 MSDN 라이브러리의 MVVM패턴 어플리케이션 만들기를 참고하세요 미소

     

  • Korea Evangelist

    모다의 윈도우폰7 뚝딱 팩토리(6)-윈도우폰의 저장소

    • 0 Comments

     

     

    한국마이크로소프트에서 초급 스마트폰 개발자 분들을 위해 공개하는 모다의 윈도우폰7 뚝딱 팩토리 여섯번째 영상!

     

    윈도우폰의 저장소는 일반적인 PC 환경의 저장소와 조금 다른 형태를 띄고 있습니다. “격리된 저장소”라고 불리는 이 곳은 어플리케이션 상호간 데이터 접근이 엄격하게 제한되어있습니다. 자신이 가진 저장소만 접근할 수 있고, 남의 저장소에 가서 파일을 열람하거나 변경하는 것이 불가능한 구조입니다.

     

    AP_Con_IStorage2

    (From MSDN Library)

     

    기존의 윈도우 어플리케이션에서 파일 핸들링 하는 것과 유사한 부분이 많아서 기존에 파일시스템 관련 프로그래밍을 해 보신 분들은 쉽게 따라하실 수 있는 구조이며, 처음에 공간할당을 받는 부분만 주의 해 주시면 됩니다.

     

    격리된 저장소에 대해 조금 더 자세하게 알고 싶으신 분들은 MSDN라이브러리의 IsolatedStorage Overview를 참고해 주시기 바랍니다!

     

    격리된 저장소에 파일 저장하고 읽기

       1:  using System;
       2:  using System.Collections.Generic;
       3:  using System.Linq;
       4:  using System.Net;
       5:  using System.Windows;
       6:  using System.Windows.Controls;
       7:  using System.Windows.Documents;
       8:  using System.Windows.Input;
       9:  using System.Windows.Media;
      10:  using System.Windows.Media.Animation;
      11:  using System.Windows.Shapes;
      12:  using Microsoft.Phone.Controls;
      13:   
      14:  using System.IO;
      15:  using System.IO.IsolatedStorage;
      16:   
      17:  namespace isoStorage1
      18:  {
      19:      public partial class MainPage : PhoneApplicationPage
      20:      {
      21:          // Constructor
      22:          public MainPage()
      23:          {
      24:              InitializeComponent();
      25:          }
      26:   
      27:          private void button1_Click(object sender, RoutedEventArgs e)
      28:          {
      29:              using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
      30:              {
      31:                  isf.CreateDirectory("Moda");
      32:                  IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream("Moda\\comment.txt", FileMode.Create, isf);
      33:                  StreamWriter writer = new StreamWriter(isfStream);
      34:   
      35:                  writer.WriteLine(textBoxSave.Text);
      36:                  writer.Close();
      37:                  isfStream.Close();
      38:              }
      39:   
      40:          }
      41:   
      42:          private void button2_Click(object sender, RoutedEventArgs e)
      43:          {
      44:              using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
      45:              {
      46:                  IsolatedStorageFileStream isfStream = 
      47:                      new IsolatedStorageFileStream("Moda\\comment.txt", FileMode.Open, isf);
      48:                  try
      49:                  {
      50:                      StreamReader reader = new StreamReader(isfStream);
      51:                      textBlockLoad.Text = reader.ReadToEnd();
      52:                      reader.Close();
      53:                      isfStream.Close();
      54:                  }
      55:                  catch
      56:                  {
      57:                      MessageBox.Show("error");
      58:                  }
      59:              }
      60:   
      61:          }
      62:      }
      63:  }

     

    격리된 저장소에 설정값 저장하고 읽기

       1:  using System;
       2:  using System.Collections.Generic;
       3:  using System.Linq;
       4:  using System.Net;
       5:  using System.Windows;
       6:  using System.Windows.Controls;
       7:  using System.Windows.Documents;
       8:  using System.Windows.Input;
       9:  using System.Windows.Media;
      10:  using System.Windows.Media.Animation;
      11:  using System.Windows.Shapes;
      12:  using Microsoft.Phone.Controls;
      13:   
      14:  using System.IO;
      15:  using System.IO.IsolatedStorage;
      16:   
      17:  namespace isoStorage2
      18:  {
      19:      public partial class MainPage : PhoneApplicationPage
      20:      {
      21:          // Constructor
      22:          public MainPage()
      23:          {
      24:              InitializeComponent();
      25:          }
      26:   
      27:          private void button1_Click(object sender, RoutedEventArgs e)
      28:          {
      29:              IsolatedStorageSettings iss = IsolatedStorageSettings.ApplicationSettings;
      30:              iss.Add("WP7", "COOL");
      31:              iss.Save();
      32:              MessageBox.Show("Saved");
      33:          }
      34:   
      35:          private void button2_Click(object sender, RoutedEventArgs e)
      36:          {
      37:              IsolatedStorageSettings iss = IsolatedStorageSettings.ApplicationSettings;
      38:              string settingsText;
      39:   
      40:              try
      41:              {
      42:                  iss.TryGetValue("WP7", out settingsText);
      43:                  textBlock1.Text = settingsText;
      44:              }
      45:              catch
      46:              {
      47:                  MessageBox.Show("error");
      48:              }
      49:          }
      50:      }
      51:  }

     

     

  • Korea Evangelist

    모다의 윈도우폰7 뚝딱 팩토리(7)-메뉴 구현하기

    • 0 Comments

     

     

    한국마이크로소프트에서 초급 스마트폰 개발자 분들을 위해 공개하는 모다의 윈도우폰7 뚝딱 팩토리 일곱번째 영상!

     

    기존의 윈도우 어플리케이션에서는 “메뉴 바” / “툴바” 라는 UI를 통해서 각 기능이나 페이지로 넘어갈 수 있었는데요, 윈도우폰에서는 스마트폰 디바이스에 맞도록 고유한 UI를 설계하여 쉽고 편하게 넘어갈 수 있도록 제공하는 것이 바로 “어플리케이션 바”입니다.

    화면 아래 작은 아이콘과 슬라이드 업 메뉴들로 구성되어 있는 이 UI는 ApplicationBar  클래스를 통해 생성하고 아이콘과 아이콘 설명, 그리고 텍스트 메뉴아이템을 추가할 수 있습니다.

     

    참고로 기본 아이콘 패키지는 C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Icons\dark 폴더에 기본적으로 설치되어있습니다. (Program Files (x86) 폴더 아래 설치되어있는 경우도 있습니다)

     

       1:          public MainPage()
       2:          {
       3:              InitializeComponent();
       4:              ApplicationBar = new ApplicationBar();
       5:              ApplicationBarIconButton button1 = new ApplicationBarIconButton(new Uri("/icons/icon.png", UriKind.Relative));
       6:              button1.Text = "Sample Icon";
       7:              ApplicationBar.Buttons.Add(button1);
       8:   
       9:              button1.Click += new EventHandler(button1_Click);
      10:   
      11:              ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem("Toggle Bar Opacity");
      12:              ApplicationBar.MenuItems.Add(menuItem1);
      13:   
      14:              menuItem1.Click += new EventHandler(menuItem1_Click);
      15:          }
      16:   
      17:          void menuItem1_Click(object sender, EventArgs e)
      18:          {
      19:              // throw new NotImplementedException();
      20:              if (ApplicationBar.Opacity == .5)
      21:                  ApplicationBar.Opacity = 1;
      22:              else
      23:                  ApplicationBar.Opacity = .5;
      24:          }
      25:   
      26:          void button1_Click(object sender, EventArgs e)
      27:          {
      28:              // throw new NotImplementedException();
      29:              ContentPanel.Background = new SolidColorBrush(Colors.White);
      30:          }

     

Page 1 of 4 (17 items) 1234