Introduction

이번시간에는 Data Binding을 구현할 때 Source Update Timing을 지정하는 방법에 대해 소개합니다. 일반적인 경우 Source Update Timing을 지정하지 않아도 해당 객체의 기본적인 Timing Rule에 따라 자동으로 지정되기 때문에 신경쓰지 않아도 되지만 간혹 Binding Timing지정을 필요한 상황이 이 있습니다.

대표 적인 예로 TextBox를 이용한 Data Binding을 구현할 때 일어나는 상황을 이야기 할 수 있습니다.

위 코드와 같이 두개의 TextBox에 DataBinding을 구현 했을때의 실행을 시켜보면 아래 동영상과 같이 TextBox에서 Focus가 사라진 후 Binding Source가 Update되는 것을 확인 할 수 있습니다.



TextBox의 경우 Binding Source Update Timing이 LostFocus이기 때문에 위와 같은 상황이 발생하는 것으로, 만약 텍스트가 입력되는 상황에서 실시간으로 데이터의 내용이 변경되기를 원한다면, DataBinding을 구현할 때 UpdateSourceTrigger를 직접 명시해주는 것으로 Timing을 지정할 수 있습니다. 아래 코드는 UpdateSourceTrigger를 PropertyChanged로 지정하여 Property의 내용이 갱신될 때마다 Source를 Update하도록 지정한 코드입니다.

그리고 아래 동영상은 UpdateSourceTrigger를 PropertyChanged로 지정했을때의 동작을 나타냅니다.



포커스를 잃지 않아도 TextBox에 내용이 변경될때마다 출력 내용이 갱신되는것을 확인하실 수 있습니다. TextBox의 경우 기본값이 LostFocus로 지정되어 있으며, 일반적인 DependencyProperty의 기본 UpdateSourceTrigger 속성은 PropertyChanged입니다.

만약 직접 구현한 DependencyProperty의 기본 UpdateSourceTrigger를 지정하고자 한다면 아래 코드와 같이FrameworkPropertyMetadata에서 DefaultUpdateSourceTrigger를 이용해 지정 할 수 있습니다.


신고

Introduction

Windows Mobile 6.5의 다음 버전인 Windows Mobile 7이  Windows Phone7이라는 새로운 이름으로 공개되었습니다. 단순히 이름만 바뀐게 아니라 어플리케이션 개발방법이나 하드웨어 스펙 등이 바뀐다는 소식이 전해지면서 많은 개발자들이 혼란스러워 하고있습니다. 이번시간에는 새롭게 공개된 Windows Phone 7에 대한 개발 방법에 대해 소개합니다.

Development Environment

Windows Phone 7에서는 2가지 방법으로 Application을 개발 할 수 있습니다. 그중한가지는 Silverlight를 이용하는 방법이고, 다른 한가지 방법은 XNA를 이용하는 방법입니다. Silverlight와 XNA 두 기술 모두 .Net개발자들에게는 익순한 기술이기 때문에 반가운 소식이 되겠지만, C++ 등을 이용한 Native Code개발을 지원하지 않기때문에 Native Code개발자에게는 다소 적응이 필요한 상황입니다. Silverlight나 XNA를 이용해 개발을 하기 위해서는 Visual Studio 2010 Express for WindowPhone 을 이용해야 합니다.

Visual Studio 2010 Express for Windows Phone을 실행하면 다음 그림과 같이 Windows Phone Application을 개발할 수 있는 프로젝트 형식이 나타납니다. 일반 Windows Phone Application을 개발하기 위해서 Silverlight for Windows Phone을 이용할 수 있으며 Game을 개발하고자 한다면 XNA 4.0을 이용해 개발 할 수 있습니다.

Hardware Chassis

Windows Mobile의 경우 지원 하는 Device의 종류가 너무 다양하기 때문에 개발자로 하여금 여러가지 특징을 지닌 Device를 모두 허용할 수 있는 Application을 개발하기란 무리가 있었습니다. 예를 들어 화면 해상도나 버튼의 위치, 센서의 종류 등이 있습니다. Windows Phone7의 경우 모든 Device들이 충족해야하는 몇가지 특징들을 제시함으로서 개발자가 보다 쉽게 여러 단말기를 지원하는 Application을 개발할 수 있습니다.

가장먼저 소개해 드릴 내용은 Windows Phone7에 포함되어야 하는 버튼에 대한 내용입니다. 위 그림은 Windows Phone7의 기본 버튼들로 왼쪽 부터 Back, Start, Search 입니다. 각 버튼의 기능에 대한 설명은 다음과 같습니다.

Back Button

Back Button을 눌렀을때 일반적으로 프로그램을 종료하거나 WebBrowser에서와 같이 Navigation용도로 활용할 수 있는 버튼 입니다. 코드를 통해 Back Button의 동작을 제어 할 수 있습니다.

Start Button

Start Button은 프로그램 동작중에 누르게 되면 프로그램이 실행되어 있는 상태에서 곧바로 Start Screen으로 이동할 수 있습니다. Start Button에 대한 동작은 코드를 통해 제어 할 수 없습니다.

Search Button

Search Button은 프로그램이 검색과 관련된 내용이 필요한 경우 사용될 수 있는 버튼입니다. 기본적으로는 아무런 동작도 수행하지 않지만, 코드를 통해 Search Button에 대한 동작을 제어 할 수 있습니다.

그리고 Windows Phone7은 해상도를 480 * 800 혹은 320*480 의 해상도만을 제공하도록 하고 있습니다. 이는 위에서 언급했던데로, 서로 다른 해상도에 따르는 여러가지 Side Effect를 방지하기 위함입니다. (회전에 대한 해상도 변경은 별도로 지원합니다.)

그리고 이러한 특징 이외에 센서나 서비스에 대한 조건도 명시하고 잇습니다. Windows Phone7에서 필요로 하는 센서나 서비스는 아래와 같습니다.

Wi-Fi, Camera, Accelerometer, Compass, Location, Speech, Vibration, Push Notifications

Windows Phone7에서는 위에 나열된 센서 혹은 서비스가 반드시 포함되어 있어야 하기 때문에 개발자들은 해당 센서(혹은 서비스)지원 여부에 대해 고민하지 않아도 됩니다.

다음시간에는 Silverlight for WindowsPhone을 이용해 간단한 Application을 구현하는 방법에 대해 소개합니다.

신고

Introduction


지난 3월 14일 기다리고 기다리던 Windows Phone Developer Tools CTP가 공개되었습니다. 발표전부터 정식 버전의 VisualStudio 2010에 포함이 될지, 아니면 별도의 툴을 제공할지 많은 곳에서 의견이 많았었는데요, 일단은 별도의 Visual Studio 2010 Express for Windows Phone 라는 별도의 툴로 제공하는 방향으로 잡힌것 같습니다.

 
공개된 Windows Phone Developer Tools CTP에는 아래 내용이 포함되어 있습니다.
 
- Visual Studio 2010 Express for Windows Phone CTP
- Windows Phone Emulator CTP
- Silverlight for Windows Phone CTP
- XNA 4.0 Game Studio CTP
 
이미 널리 알려진데로 Windows Phone 7에서는 Silverlight와 XNA를 이용한 어플리케이션 개발을 지원 하기 때문에 이에따른 기능 들도 포함 하고 있는것을 확인 하실 수 있습니다.
 
Windows Phone Developer Tools CTP는 아래 URL에서 다운로드 하실 수 있습니다.
http://developer.windowsphone.com/windows-phone-7-series/
 
다음 시간에는 Visual Studio 2010 Express for Windows Phone CTP를 이용해 실제 어플리케이션을 개발하는 방법에 대해 살펴보도록 하겠습니다.
신고

Introduction

UI를 개발하거나, 혹은 다른 이유로 WPF를 이용해 패턴을 그려야 하는 상황이 있습니다. 일반적인 방법으로는 패턴 이미지를 저장하여 패턴 이미지를 출력하거나, Brush의 Viewport 영역을 조절하여 패턴을 출력하는 방식을 사용합니다. 패턴이미지를 사용 할경우 예상되는 최대 크기로 패턴이미지를 저장하고 있어야 하기 때문에 불필요하게 많은 리소스를 차지 하게 되며, Brush의 Viewport 영역을 조절할 경우 해당 객체의 상대적인 크기에 비례하여 Viewport가 적용되기때문에 패턴의 크기가 고정적 이어야 할 경우 적합하지 않습니다.

이번시간에 소개할 내용은 Viewport 영역을 지정해 패턴을 그릴때 Viewport Unit을 사용해 패턴을 고정적인 크기로 사용하는 방법에 대해 소개합니다. ViewportUnit은 Viewport 영역이 상대값인지 절대 값인지를 지정하는 속성으로 기본값은 상대값으로 지정되어 있습니다.

왼쪽 그림은 Viewport Unit을 Absolute로 지정한 결과로 Viewport를 0,0,50,80 으로 지정했습니다. Viewport Unit이 Absolute로 지정되었기때문에 패턴의 크기가 50, 80으로 고정 되어 BoundingBox의 크기가 변경되더라도 패턴의 크기는 변경되지 않고 출력되는 패턴의 개수가 달라지게 됩니다.

반대로 오른쪽은 ViewportUnit이 기본값(RelativeToBoundingBox)으로 지정한 결과입니다. RelativeToBoundingBox의 경우 Viewport가 BoundingBox 영역의 상대적인 크기를 의미 하기 때문에 BoundingBox의 크기가 변경되어도 패턴의 개수는 일정하고 패턴의 크기가 달라지게 됩니다.

신고

Introduction

이번시간에는 List<T>형식의 목록에서 조건에 맞는 데이터를 간단하게 삭제 하기 위한 방법을 소개합니다. Extension Method로 정의되었기 때문에 사용시에는 아래와 같이 List<T> 객체에서 RemoveItems를 직접 호출 할 수 있습니다.

Example

 

신고