반응형

개발공부/WPF 9

[WPF] 트리거(Trigger) 설명 및 예제

트리거 어떤 조건이나 이벤트가 주어졌을 때, 묵시적으로 컨트롤의 상태나 이벤트 핸들러를 호출하는 기능. 트리거를 사용하면 변화에 따른 변화를 지정할 수 있다. Style에서 Setter와 Trigger의 차이 Setter : 엘리먼트가 처음 생성되는 시점에 프로퍼티를 설정한다. Trigger : 프로퍼티가 변경되는 시점에 프로퍼티를 설정한다. 트리거 종류 Property Trigger : Dependency Property가 변경될 때 실행된다. Event Trigger : 라우티드 이벤트(Routed event)가 발생할 때 실행된다. Data Trigger : Binding 문법으로 연결된 .NET 프로퍼티 값이 변경되었을 때 실행된다. Multi Trigger : 다수의 프로퍼티를 트리거 조건으로 ..

개발공부/WPF 2021.11.18

[WPF] 데이터 바인딩 (Data Binding) 이란

데이터 바인딩 앱 UI와 해당 UI가 표시하는 데이터를 연결하는 프로세스. 데이터 바인딩 사용하는 이유 데이터 값에 변화가 필요할 때 사용한다. 예시 데이터 값이 변경되어 UI에도 변경 사항이 반영되어야 할 때 UI에서 데이터 값을 변경되어 내부 데이터가 자동으로 업데이트되어야 할 때 데이터 흐름 방향 소스 : 데이터 변수 타깃 : UI에 보여지는 부분 1. OneWay Binding 소스가 변경될 때마다 타깃이 갱신된다. 2. TwoWay Binding 타깃이나 소스 둘 중에 한 쪽이 변경되면 서로 갱신한다. 3. OneWayToSource 타깃이 변경될 때마다 소스가 갱신된다. 4. OneTime 바인딩 클래스가 인스턴스화될 때 한 번 타깃에 반영되고 그 뒤로 소스가 변경되어도 타깃에 반영되지 않는다..

개발공부/WPF 2021.11.09

[WPF] 의존 프로퍼티(Dependency Property) 이해하기

의존 프로퍼티란? 프로퍼티 값이 변경되었을 때 자동으로 어떤 일을 처리하게 할 수 있게 해주는 것. 스타일링, 데이터 바인딩, 애니메이션 등 WPF 주요 부분에 사용된다. 의존 프로퍼티 사용 이유 (장점) 의존 프로퍼티를 사용하면 엘리먼트를 사용하는 시점에 프로퍼티 값이 결정되고, Static 변수이기 때문에 메모리 절약에 효과적이다. 프로퍼티를 구현할 때 필요한 많은 코드를 표준화할 수 있다. 일반 프로퍼티와 다른 점 의존 프로퍼티에는 값이 변경되었을 때 자동으로 알림을 주는 "변경 통보" 기능이 있다. 일반적인 플랫폼은 데이터 값이 변경되었을 때 UI도 변경되는 기능이 많은데, 이럴 때 의존 프로퍼티를 사용해서 편리하게 구현할 수 있다. 구현 예시 1. 의존 프로퍼티를 등록한다. 의존 프로퍼티 등록 ..

개발공부/WPF 2021.11.08

[WPF] 라우티드 이벤트(Routed Event) 이해하기

라우티드 이벤트란? 엘리먼트 트리 구조에서 잘 동작하도록 설계된 이벤트 라우티드 이벤트 사용 이유 (장점) 라우티드 이벤트가 발생하면 특정 코드가 없어도 간편하고 일관성 있게 비주얼/로지컬 트리 상의 각 엘리먼트마다 이벤트를 일으키면서 위아래로 이동할 수 있다. 라우티드 이벤트 전략 종류 1. 터널링 루트 엘리먼트에 있는 이벤트가 먼저 일어나고 이후 자식 엘리먼트의 이벤트가 차례대로 일어난다. 2. 버블링 소스 엘리먼트에서 먼저 일어나고, 이후 부모 엘리먼트의 이벤트가 차례대로 일어난다. 3. 다이렉트 소스 엘리먼트에서 한 번만 일어난다. 구현 예시 1. 라우티드 이벤트 등록 public static readonly RoutedEvent ClickEvent = EventManager.RegisterRou..

개발공부/WPF 2021.11.07

[XAML] 레이아웃 종류 알아보기 + 예제 정리

레이아웃이란? 화면에 구성요소를 배치하는 방식이다. XAML에는 여러 방식의 레이아웃이 있다. Canvas 모눈종이. Canvas의 자식 요소는 크기가 조정되지 않고 지정된 좌표에 배치된다. Canvas 크기가 달라져도 안의 요소의 크기는 변하지 않는다. 굉장히 자유도가 높은 컨트롤이다. DockPanel Dock 속성을 사용하여 자식이 생긴 순서대로 위치를 정한다. 같은 코드라도 순서를 바꾸면 위치가 달라질 수 있다. 버튼 순서를 변경해봤다. Grid 표 형식의 패널. 가장 많이 사용되는 레이아웃이다. 열과 행을 정의하고 공간의 비율에 따라 배분할 수 있다. StackPanel 자식 요소를 행이나 열로 간단하게 나열할 때 사용하는 컨트롤. Orientation 속성을 사용해서 나열할 방향을 정할 수 있..

개발공부/WPF 2021.10.29

[XAML] 엘리먼트 어트리뷰트(Element & Attribute)

XAML(Extensible Application Markup Language) 닷넷 API에서만 사용하는 XML 기반의 마크업 언어. 사용자 인터페이스 Element, 데이터 바인딩, 이벤트 등의 기능을 정의할 때 사용한다. Element의 기능 포함된 데이터에 대해 설명한다. 다른 요소를 포함한다. element는 다음과 같이 element 이름, 데이터 형식으로 구성된다. "fruit"이라는 이름의 Element를 정의하는 방법 이렇게 element가 정의된 경우라면 다음과 같이 element를 만들 수 있다. apple strawberry 주의사항 XML은 대/소문자를 구별한다. 요소의 이름은 숫자나 밑줄 또는 "XML"이라는 문자로 시작될 수 없다. 요소의 이름에는 공백이 포함될 수 없다. At..

개발공부/WPF 2021.10.27

WPF, .NET 개발환경 세팅하기

개발 시작 전에, 편리한 개발 환경을 만들어놓는 것이 중요하다. Visual Studio 설치 일반적으로 Window application 개발은 Visual Studio를 사용한다. 편리한 기능이 많기 때문! JetBrains사의 Rider도 있지만, 유료이다. 아래 링크에서 Visual Studio를 다운로드할 수 있다. 무료 Visual Studio 설치하기 나는 무료인 Visual Studio Community를 설치했다. 설치 파일을 실행하면 아래와 같이 필요한 기능을 선택하는 화면이 나온다. ".NET 데스크톱 개발"에 체크해준다. (나중에도 필요한 기능을 추가할 수 있다.) 설치 완료후 컴퓨터를 다시 시작한 다음, WPF 프로젝트를 만들 수 있다. Resharper Resharper는 Vis..

개발공부/WPF 2021.10.25

윈도우 프로그램 개발에 WPF를 사용하는 이유

WPF Window 기반 데스크톱 클라이언트 애플리케이션을 만드는 UI 프레임워크 MS는 왜 WPF를 만들었을까? 마이크로소프트 사는 GDI+와 USER 시스템의 한계를 벗어나는 동시에 생산성이 뛰어난 GUI 기술을 제공하려고 했다. M사의 대표적인 GUI로 WinForms이 있지만, 왜 WPF를 출시했을까? WinForms vs WPF WinForms WPF 오래되어서 검증된 기술이 많다. (WPF도 어느정도 오래되어서 기술이 쌓였다.) 유연한 프로그램이 가능해서 컨트롤 제작이 쉽다. 버튼, 라벨 등이 모두 Window 객체이다. Window, Web 기반 프로그램을 동시에 사용 가능하다. 배우기 쉽다. MVVM 패턴을 사용한다. 무료로 얻을 수 있는 외부 컨트롤이 많다. 데이터와 레이아웃을 구분해서 ..

개발공부/WPF 2021.10.24