본문 바로가기

개인공부/WPF

(6)
[WPF] DataContext ■ DataContext란? 데이터 바인딩을 위한 소스 객체를 명시하는 속성 DataContext로 지정된 객체의 속성을 소스 객체로 사용할 수 있다. ■ DataContext 사용 방법 - 필요한 형태의 Model Class 만들어서 사용 using System.Windows; namespace DataContextEx { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); User user = new User(); this.DataContext = user; } } } · MainWindow의 DataContext 속성에 User Class로 생성한 객체 할당 · User Class의 속성을 바인..
[WPF] 이벤트 라우팅, 터널링(Tunneling), 버블링(Bubbling) ■ 이벤트 라우팅(Event Routing)이란? 이벤트 발생 시에 Element Tree의 여러 Element로 이벤트가 전달되는 것 이벤트는 터널링(Tunneling), 버블링(Bubbling), 다이렉트(Direct) 3가지로 분류됩니다. - 터널링(Tunneling) : 상위에서부터 이벤트 발생 요소(Element)로 이벤트 발생 - 버블링(Bubbling) : 이벤트 발생 요소(Element)부터 상위로 이벤트 발생 - 다이렉트(Direct) : 하나의 요소(Element)에서만 이벤트 발생 ■ Event Routing Example - Example 설명 · 4단계의 Grid 계층 구조 안에 button이 있는 구조 · 좌, 우측 button 클릭 시 이벤트 발생 순서대로 가운데 TextBox..
[WPF] 의존 속성(DependencyProperty) ■ 의존 속성(DependencyProperty)란? Property 값이 변경되었을 때, 자동으로 어떤 작업을 처리해 주는 것 스타일 지정, 데이터 바인딩, 애니메이션 처리 등에 사용됩니다. ■ DependencyProperty 사용 방법 - DependencyProperty 정의 public static readonly DependencyProperty sampleDataProperty = DependencyProperty.Register( "sampleData", // (1) typeof(string), // (2) typeof(MainWindow), // (3) new FrameworkPropertyMetadata( null, // (4) new PropertyChangedCallback(Samp..
[WPF] 멀티쓰레드(Multi Thread) ■ 멀티쓰레드(Multi Thread)란? 여러개의 쓰레드가 동시에 실행하는 것 WPF가 실행되면 Rendering Thread, UI Thread가 생성됩니다. Rendering Thread는 백그라운드에서 실행되며 WPF화면을 Rendering하는데 사용됩니다. UI Thread는 사용자의 입력, 이벤트 처리, 화면 그리기 등에 사용됩니다. WPF는 STA(Single Thread Apartment) 모델 ■ BackgroundWorker - BackgroundWorker 클래스는 UI Thread 외에 시간이 많이 걸리는 작업을 비동기 적으로 작업하기 위한 클래스입니다. - BackgroundWorker는 DoWork, ProgressChanged, RunWorkerCompleted 이벤트를 통해 ..
[WPF] 데이터 바인딩(Data Binding) ■ 데이터 바인딩(Data Binding)이란? - Control 또는 Element를 Data에 연결시키는 기술이다. ■ Binding Example (Control - Control) - 소스 객체 : 타겟 객체의 출처가 되는 객체, 원본 객체 - 타겟 객체 : 소스 객체를 목표로 묶은 객체, 원본 객체를 바라보는 객체 · "tbx"라는 이름의 TextBox, Text속성을 OneWay 모드로 binding · "lbl"이라는 이름의 Label, Content속성을 tbx 객체의 Text속성을 참조로 binding - TextBox ("tbx")의 Text속성 변화에 따라서 Label ("lbl")의 Content속성이 자동으로 변경됨 ■ Binding Mode - OneTime : Applicati..
[WPF] Hello World ■ WPF란? WPF(Windows Presentation Foundation)는 Microsoft사에서 개발한 Desktop Client Application을 만드는 UI Framework입니다. WPF는 최신 그래픽 하드웨어를 활용할 수 있도록 해상도가 독리적인 벡터 기반의 렌더링 엔진을 사용합니다. WPF는 XAML(Extensible Application Markup Language)을 사용하여 시각적 UI를 작성, Code Behind에서 기능을 구현하기 때문에 디자인 작업과 개발 작업을 분담할 수 있습니다. ■ Hello World 프로젝트 만들기 - 새 프로젝트 만들기 - WPF 앱(.NET Framework) 선택 - 프로젝트 이름(HelloWorld) 입력 - 위치(프로젝트 생성 경로)..