본문 바로가기

.Net Technology/WPF

(11) 컨트롤 명령과 데이터 바인딩의 이해 WPF 컨트롤 명령의 이해 이번에는 명령(command)에 대해서 살펴보도록 하자. WPF는 컨트롤 명령을 이용한 신기한 이벤트 모델을 지원해주고 있다. 알다시피 닷넷의 이벤트는 기본 클래스에 정의되어 있고 클래스나 클래스로부터 파생되어 작성될 수 있다. 또한 닷넷 이벤트는 클래스들과 강하게 결합되어 있다. 반면에 WPF 컨트롤 명령은 이벤트처럼 특정 컨트롤에 지정하긴 하지만 다양한 형태로 여러 컨트롤들에게 지정하는 것이 가능하다. 예를 들어 WPF는 Copy, Paste, Cut과 같은 명령들을 지원하고 있고 이러한 명령을 여러 UI 개체들에게 지정해줄 수 있다는 것이다. 또한 Ctrl+C, Ctrl+V와 같은 키도드 단축키와 같은 명령을 이용할 수도 있다. 윈도우 폼과 같은 다른 UI 프로그램에서 역.. 더보기
(10) 패널을 이용한 레이아웃의 구성 실제로 WPF 애플리케이션은 창안에 많은 UI들이 다양한 형태로 그룹화 시킬 수 있다. 뿐만 아니라 배치한 UI요소들의 창이 리사이징 될 때 전체 크기를 조절할 수 있고 아니면 부분적으로 크기를 조절할 수도 있다. 이러한 기능을 지원하기 위해서 WPF는 여러가지 패널들을 지원하고 있다. 이전 장에서 언급했듯이 Window에는 단 하나의 개체만 추가할 수 있다. 만약 Window 개체에 바로 Button 개체가 달랑 추가되어 있다고 가정해보자. 이 때 창의 사이즈가 변경되어도 버튼의 크기는 변경되지 않고 같은 곳에 계속 위치하게 될 것이다. OK 만약 개체 아래에 여러 개의 개체를 선언하게 되면 컴파일시에 마크업 에러가 발생하게 될 것이다. 그 이유는 앞에서 언급한 것처럼 Window 객체의 Content.. 더보기
(9) WPF 컨트롤 다루기 Button 컨트롤 동작 지금까지 의존성 속성과 이벤트 라우틴에 대해서 살펴보았고 이 내용을 통해서 WPF 컨트롤을 보다 쉽게 이해할 수 있을 것이다. 그럼 버튼(Button) 컨트롤부터 살펴보도록 하겠다. 본능적으로 우리는 이미 버튼 컨트롤의 역할에 대해서 알고 있다. 버튼 컨트롤들은 마우스를 눌렀을 때나 키보드에서 엔터키를 눌렀을 때 그리고 버튼에 포커스가 왔을 때 각각의 UI를 가지고 있다. WPF에서는 ButtonBase라는 클래스가 존재하고 이 클래스는 Button, RepeatButton, ToggleButton와 같은 컨트롤들로 파생된다. ButtonBase 클래스 어떤 부모 클래스들과 마찬가지로 ButtonBase 클래스는 파생한 컨트롤들에게 여러 가지 모양의 인터페이스를 제공하고 있다 또.. 더보기
(8) 의존성 속성과 이벤트 라우팅의 이해 의존성 속성 이해 WPF(Windows Presentation Foundation) API들은 classes, structures, interfaces, delegates, enumerations과 같은 각각의 닷넷 클래스들의 멤버를 이용하고 있고 또한 properties, methods, events, constant data/read-only 와 같은 멤버들을 이용하고 있다. 하지만 WPF는 의존성 속성(Dependency Property)라는 새로운 용어와 새로운 프로그래밍 메커니즘을 소개하고 있다. 의존성 속성들은 WPF를 위해서 설계된 문법이라 할 수 있다. 현재까지 닷넷이 아닌 다른 언어를 이용할 경우 특정 속성을 정의하기 위해서 네이티브 문법을 이용해서 특정 속성을 정의해야 했었다. 하지만 .. 더보기
(7) WPF 컨트롤 라이브러리의 분해 WPF 프로그래밍 모델에 대해서 살펴보았고 Window와 Application 객체에 대해서 살펴보았다. 또한 XAML(Extendable Application Markup Language)에 대한 문법들과 여러 가지 이슈들에 대해서 살펴보았다. 이번 장에서는 WPF 컨트롤들에 대해서 살펴볼 것이고 WPF 컨트롤의 구조에 대해서도 살펴 볼 것이다. 그리고 의존 속성과 이벤트 라우팅에 대한 내용 또한 살펴볼 것이다. 앞에서 이미 기본적인 프로그래밍 모델에 대해서 살펴보았고 이번 장에서는 WPF 컨트롤들을 이용하는 방법에 대해서 살펴볼 것이다. 예를 들어 다양한 WPF 컨데이너들이(Canvas, Grid, StackPanel, WrapPanel등) 어떻게 동작되는지 살펴볼 것이고 또한 툴바, 메뉴, 상태바와.. 더보기
(6) 비주얼 스튜디오를 이용하여 WPF 애플리케이션 만들기 지금까지의 예제들은 텍스트 편집기와 명령 프롬포트, XAML패드와 같은 도구를 이용해서만 만들어 왔었다. 이렇게 별도의 툴없이 작업을 진행해 온 이유는 WPF 애플리케이션의 기본적인 문법에 초점을 맞추기 위해서였다. 하지만 이번에는 비주얼 스튜디오가 얼만큼 개발을 간단히 할 수 있게 지원해 주는지 살펴보도록 하겠다. WPF 프로젝트 템플릿 비주얼 스튜디오의 새로운 프로젝트 대화상자를 열어보면 Visual C# 이란 메뉴의 Window 라는 소메뉴를 클릭해보면 WPF 프로젝트가 정의되어 있는 것을 볼 수 있다. 다음 [그림16] 에서처럼 WPF 프로젝트를 선택할 수 있을 뿐만 아니라 WPF 사용자 정의 컨트롤, WPF 사용자 지정 컨트롤, WPF 브라우저 응용프로그램(XBAP)과 같은 프로젝트를 선택할 수.. 더보기
(5) XAML의 문법부터 이해하기 앞에서 언급했듯이 직접 손으로 XAML 코드를 작성하게 되지는 않을 것이다. WPF 애플리케이션애 개발할 때 UI 부분은 아마도 비주얼 스튜디오 2008이나 익스프레션 블렌드와 같은 툴을 이용해서 XAML을 만들게 되는 경우가 대부분일 것이다. 그럼에도 불구하고 XAML의 문법에 대해서 어느 정도 이해하고 있다면 XAML이 꼬이거나 특정 부분을 손으로 수정할 때 많은 도움을 받을 수 있을 것이다. 그리고 WPF를 더 깊게 이해할 수 있을 것이다. 그렇기 때문에 XAML의 기본적인 문법에 대해서 몇 가지 예제와 함께 살펴볼 것이다. XAML패드를 이용한 XAML 연습 XAML에 대해서 공부할 때 XAML패드를 이용하면 간단하고 빠르게 XAML에 대한 UI를 확인해 볼 수 있다. Microsoft Windo.. 더보기
(4) XAML 기반의 WPF 애플리케이션 만들기 XAML 기반의 WPF 애플리케이션 만들기 XAML(Extensible Application Markup Language)는 닷넷 객체들의 트리를 마크업으로 정의하는 XML 기반의 문법이다. WPF의 UI를 만드는데 있어서 XAML은 굉장히 많은 비중을 차지하고 있고 실제로 추상적이지 않은 닷넷 객체들을 정의할 수 있다. 앞으로 살펴볼 것이지만 *.xaml 파일에 정의된 XAML은 닷넷 네임스페이스에 선언된 타입과 직접 연결이 되는 타입으로 변환된다. XAML은 XML기반의 문법이기 때문에 XML의 장점과 단점을 모두 가지게 된다. 장점에 대해서 살펴 보자면 XAML은 자기 기술적인(self-describing) 특징을 가지고 있다. XAML 안의 각각의 개체들은 대체로 닷넷 네임스페이스에서 주어진 이름.. 더보기
(3) WPF 애플리케이션 만들기 Window의 부모 클래스들은 많은 기능들을 제공해주고 있기 때문에 Window 클래스를 바로 이용하는 것도 가능하고 아니면 상속받아 새로운 윈도우를 만드는 것도 가능하다. 그럼 그 두 가지 방식을 코드를 통해서 살펴보도록 하겠다. 대부분의 WPF 애플리케이션들이 XAML을 이용해서 윈도우를 만들긴 하지만 이것은 단지 선택적인 것이다. XAML로 할 수 있는 것들은 모두 코드를 이용해서 만들 구현하는 것이 가능하다. 즉, 객체지향의 기반으로 WPF 프로그램을 만드는 것이 가능하다는 것이다. 그럼 예제를 만들어 확인해 보도록 하자. 여기서 우리는 XAML을 이용하지 않고 Application 클래스와 Window 클래스를 이용해서 코드를 작성해 볼 것이고 SimpleWPFApp.cs 파일과 C#코드를 이용.. 더보기
(2)WPF 애플리케이션의 다양한 특징과 어셈블리 WPF 애플리케이션의 다양한 특징들 WPF API는 다양한 GUI 애플리케이션을 만드는데 이용될 수 있지만 어떤 목적이냐에 따라서 개발 방법이나 구조가 조금 달라지게 된다. 이번에는 이러한 각각의 개발 모델에 대해서 간단하게 살펴보도록 하겠다. 전형적인 데스크탑 애플리케이션 먼저 전형적인 모델은 로컬 머신에 어셈블리를 실행하는 것이다. 예를 들어 WPF를 이용해서 텍스트 에디터를 만들었거나 페인팅 프로그램 아니면 디지털 플레이어, 포토앨범과 같은 멀티미디어 프로그램들이 여기에 해당될 것이다. 다른 데스크탑 애플리케이션처럼 *.exe 파일로 컴파일 되어 윈도우 인스톨러나 클릭온스(ClickOnce)와 같은 기술을 이용해서 실행될 수 있을 것이다. 이런 관점으로 살펴본다면 WPF는 간단하게 전형적인 데스크탑.. 더보기
(1) WPF의 탄생배경 윈도우 폼 API는 닷넷에서 GUI를 다루기 위해서 사용되어 온 툴킷이고 데스크탑 UI를 만들기 위해서 사용되어 왔다. 윈도우폼과 GDI+가 닷넷 3.5에서 역시 지원되는 것은 사실이지만 닷넷 3.0이 발표되면서 새로운 데스크탑 UI를 위한 툴킷으로 WPF(Windows Presentation Foundation)가 새롭게 발표되었다. 이번 장에서는 WPF를 다루는 첫 번째 장으로서 먼저 WPF라는 새로운 UI 프레임워크가 탄생하게 된 배경에 대해서 살펴보고 또한 WPF에서 사용되는 다양한 API들을 살펴 볼 것이다. 그리고 WPF 프로그래밍 모델에 대해서 살펴보고 Window와 Application 클래스들이 하는 역할에 대해서 살펴볼 뿐만 아니라 WPF에서 핵심적인 어셈블리와 네임스페이스들을 살펴볼 .. 더보기