레이블이 wpf교육인 게시물을 표시합니다. 모든 게시물 표시
레이블이 wpf교육인 게시물을 표시합니다. 모든 게시물 표시

2018년 3월 27일 화요일

[wpf학원, wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정

요즘 인기있는 강좌하나를 소개해 드리려고 합니다^^
스티커 이미지

닷넷, c#기반 wpf 프로그래밍
인터페이스구현 재직자 향상과정

[WPF학원,WPF교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[교육개요]
[국비지원]Presentation Framework인 윈도 프레젠테이션 파운데이션(Windows Presentation Foundation), WPF는 아발론(Avalon)이라는 코드 이름을 사용하였으며 닷넷 프레임워크의 그래픽 하부 시스템 기능(WinFX) 입니다. 기존 GDI 와 GDI+ 기반의 프레젠테이션 시스템을 대체할 새로운 MS사의 차세대 프레젠테이션 프레임워크로 본 과정에서는 WPF의 기본적인 기능부터 고급 기능까지, WPF의 철학을 배울 수 있으며 WPF를 처음접하는 분들을 위해 예제중심으로 하나씩 배울 수 있도록 구성하였습니다. C# 코드와 XAML를 이용해 WPF 애플리케이션을 개발하는 법을 배우게 되며 다양한 예제를 통해 재미있게 배울 수 있습니다.
[과정특징]
본 과정은 체계적 학습과 다양한 개발 방법을 익힘으로 WPF 개발의 기술적 기반을 마련하고자 하며 배운 기술들을 융합하여 간단한 미니프로젝트로 응용프로그램을 개발해 봄으로써 WPF 개발에 대한 자신감을 심어 드립니다.
수료조건
출석률 80%이상
교육목표
WPF 개요에 대한 이해
WPF 계층 구조의 이해
WPF 멀티쓰레드 프로그래밍의 이해
XAML Namespace에 대한 이해
컨텐트 프로퍼티에 대한 이해
의존 프로퍼티(DependencyProperty), 의존속성에 대한 이해
이벤트의 라우팅(RoutedEvent), Bubbling, Tunneling에 대한 이해
WPF 컨트롤 및 구조체에 대한 이해
사용자 정의 컨트롤의 이해
데이터 바인딩에 대한 이해
WPF Trigger에 대한 이해
WPF Style에 대한 이해
[NCS 과정 목표]
▶ XAML, XML 기반으로 사용자 인터페이스를 정의할 수 있다.
▶ 사용자 인터페이스 설계서를 기반으로 외부 및 내부 모듈 간의 공통적으로 제공되는 기능과 각 데이터의 인터페이스를 확인할 수 있다.
▶ 개발하고자 하는 응용소프트웨어와 관련된 외부 및 내부 모듈 간의 연계가 필요한 인터페이스의 기능을 식별할 수 있다.
▶ 개발하고자 하는 응용소프트웨어와 관련된 외부 및 내부 모듈 간의 인터페이스를 위한 데이터 표준을 확인할 수 있다.
▶ 개발하고자 하는 응용소프트웨어와 연계 대상 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 인터페이스 기능 구현을 정의할 수 있다.
▶ 개발하고자 하는 응용소프트웨어와 연계 대상 모듈 간의 세부 설계서를 확인하여 공통적인 인터페이스를 구현할 수 있다.
▶ 개발하고자하는 응용소프트웨어와 연계 대상 내외부 모듈 간의 연계 목적을 고려하여 인터페이스 기능 구현 실패 시 예외처리방안을 정의할 수 있다.
▶ WPF를 이용하여 사용자 인터 페이스 기능을 구현할 수 있다.
[교육대상]
닷넷 초보 개발자
C# 윈폼 개발자
윈도우 어플리케이션 개발자

2018년 2월 19일 월요일

[WPF학원] 닷넷, C#기반 WPF 프로그래밍 인터페이스구현 재직자 향상과정


교육개요[국비지원]Presentation Framework인 윈도 프레젠테이션 파운데이션(Windows Presentation Foundation), WPF는 아발론(Avalon)이라는 코드 이름을 사용하였으며 닷넷 프레임워크의 그래픽 하부 시스템 기능(WinFX) 입니다. 기존 GDI 와 GDI+ 기반의 프레젠테이션 시스템을 대체할 새로운 MS사의 차세대 프레젠테이션 프레임워크로 본 과정에서는 WPF의 기본적인 기능부터 고급 기능까지, WPF의 철학을 배울 수 있으며 WPF를 처음접하는 분들을 위해 예제중심으로 하나씩 배울 수 있도록 구성하였습니다. C# 코드와 XAML를 이용해 WPF 애플리케이션을 개발하는 법을 배우게 되며 다양한 예제를 통해 재미있게 배울 수 있습니다.

[과정특징]
본 과정은 체계적 학습과 다양한 개발 방법을 익힘으로 WPF 개발의 기술적 기반을 마련하고자 하며 배운 기술들을 융합하여 간단한 미니프로젝트로 응용프로그램을 개발해 봄으로써 WPF 개발에 대한 자신감을 심어 드립니다.
수료조건출석률 80%이상
교육목표WPF 개요에 대한 이해
WPF 계층 구조의 이해
WPF 멀티쓰레드 프로그래밍의 이해
XAML Namespace에 대한 이해
컨텐트 프로퍼티에 대한 이해
의존 프로퍼티(DependencyProperty), 의존속성에 대한 이해
이벤트의 라우팅(RoutedEvent), Bubbling, Tunneling에 대한 이해
WPF 컨트롤 및 구조체에 대한 이해
사용자 정의 컨트롤의 이해
데이터 바인딩에 대한 이해
WPF Trigger에 대한 이해
WPF Style에 대한 이해

[NCS 과정 목표]
XAML, XML 기반으로 사용자 인터페이스를 정의할 수 있다.
사용자 인터페이스 설계서를 기반으로 외부 및 내부 모듈 간의 공통적으로 제공되는 기능과 각 데이터의 인터페이스를 확인할 수 있다. 
개발하고자 하는 응용소프트웨어와 관련된 외부 및 내부 모듈 간의 연계가 필요한 인터페이스의 기능을 식별할 수 있다. 
개발하고자 하는 응용소프트웨어와 관련된 외부 및 내부 모듈 간의 인터페이스를 위한 데이터 표준을 확인할 수 있다. 
개발하고자 하는 응용소프트웨어와 연계 대상 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 인터페이스 기능 구현을 정의할 수 있다.
개발하고자 하는 응용소프트웨어와 연계 대상 모듈 간의 세부 설계서를 확인하여 공통적인 인터페이스를 구현할 수 있다. 
개발하고자하는 응용소프트웨어와 연계 대상 내외부 모듈 간의 연계 목적을 고려하여 인터페이스 기능 구현 실패 시 예외처리방안을 정의할 수 있다. 
WPF를 이용하여 사용자 인터 페이스 기능을 구현할 수 있다.
교육대상닷넷 초보 개발자 
C# 윈폼 개발자 
윈도우 어플리케이션 개발자  




교육내용
WPF 프로그래밍WPF 소개? XAML기반 HelloWorld 따라하기
HelloWorld XAML기반 WPF 프로그램 작동 원리
WPF 클래스 계층구조
WPF HelloWorld-2(C#코드 기반)
WPF 멀티쓰레드 프로그래밍
Dispatcher를 이용한 WPF 멀티쓰레드 프로그래밍
Background Worker를 이용한 WPF 멀티쓰레드 프로그래밍
Background Worker를 이용한 WPF 멀티쓰레드 프로그래밍 실습
XAML 이란?
XAML vs C# 샘플코드
XAML 기초
샘플 코드 이해하기
Content Property란?
XAML 네임스페이스
Load Embedded Xaml(C# 파일의 문자열을 XAML로 파싱하여 실행하기)
XAML을 소스코드와 함께 컴파일
Write Inline C# in XAML
XAML에서 사용자 정의 컨트롤 사용하기
Button을 XAML로 정의하기
Main 메소드 없이 XAML을 만들기
프로퍼티 개요 및 컨텐트 프로퍼티
컨텐트 프로퍼티 덤프 예제
DockPanel, Grid, Button, Dock, RowDefinition, ColumnDefinition 프로퍼티
프로퍼티가 정의되지 않은 엘리먼트에서 속성 정의하기
클래스와 이벤트 이름으로 이벤트 핸들러 정의하기
엘리먼트와 속성 정의하기
의존 프로퍼티(DependencyProperty), 의존속성
입력 이벤트의 라우팅(RoutedEvent), Bubbling, Tunneling
컬러(Color) 구조체
브러시(Brush), SolidColorBrush
브러시(Brush), Gradient Brush(LinearGradientBrush, RadialGradientBrush)
컨텐트(Content), FontFamily, FontSize
버튼(Button)과 Control
패널(Panel)
스택패널(StackPanel)
랩패널(WrapPanel)
DockPanel
그리드(Grid)
캔버스(Canvas)
데이터 바인딩(Data Binding)
데이터 바인딩(Data Binding) 실습(OneWay, TwoWay, OneWayToSource, OneTime)
TwoWay 데이터 바인딩 실습
DataContext를 이용한 데이터 바인딩
DataContext를 이용한 TwoWay 데이터 바인딩 실습
사용자정의 엘리먼트와 ScrollBar 데이터 바인딩
x:Static, Source를 통한 데이터 바인딩(DateTimeFormatInfo를 이용한 요일정보를 ListBox, TextBlock에 바인딩)
Source, SourceResource를 통한 데이터 바인딩
PropertyChanged이벤트, PropertyChangedEventHandler를 통한 데이터 바인딩
MVVM(Model-View-ViewModel) 이란?
데이터 바인딩을 심플 예제
INotifyPropertyChanged 인테페이스를 이용한 데이터 바인딩 예제
데이터 바인딩을 이용한 계산기 실습(MVVM, ViewModel)
데이터 바인딩을 이용하여 오라클 EMP 테이블 데이터를 ListView에 뿌리기(ODP.NET, ItemTemplate)
OracleDataAdapter, LiveView, 데이터 바인딩을 이용하여 오라클 EMP 테이블 데이터를 ListView에 뿌리기(ODP.NET, ItemTemplate)
Linq쿼리식,OracleDataAdapter, LiveView, 데이터 바인딩을 이용하여 오라클 EMP 테이블 데이터를 ListView에 뿌리기(ODP.NET, ItemTemplate)
ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListBox Refresh 적용 실습
Menu, MenuItem, TextBlock, ContextMenu, Toolsbar, StatusBar, Input Control, Dialog, WPF Print
Menu, MenuItem
텍스트블록(TextBlock)
컨텍스트 메뉴(ContextMenu)
캘린더(Calender)
툴바(Toolbar)
상태바(Statusbar)
트리뷰(TreeView)
리스트박스(ListBox)
리스트뷰(ListView)
데이터 그리드(DataGrid)
다이얼로그(Dialog)
메시지 박스(MessageBox) & 툴팁(ToolTip)
OpenFileDialogBox, SaveFileDialogBox, PrintFileDialogBox
Input Controls
Input Controls - PasswordBox
Input Controls – Key Input Control
WPF Printing
WPF Style, Trigger
WPF Style
WPF Triggers(Trigger, MulitiTrigger, DataTrigger, MultiDataTrigger, EventTrigger)
프로퍼티 트리거(Property Trigger)
데이터 트리거(DataTrigger)
이벤트 트리거(EventTrigger), ColorAnimation, DoubleAnimation, DoubleAnimationUsingKeyFrames
WPF Performance Tip

2018년 2월 8일 목요일

[C#.NET교육] C#기초에서 윈도우, 스마트폰 앱개발 과정(C#.NET, ADO.NET, WinForm, WPF, 자마린)




선수학습 :프로그래밍 기초 데이터베이스 기초
교육기간 :상단 URL 참조
강의장소 :탑크리에듀교육센터 [A강의장] 
교육문의 :02-851-4790

수강료 :980,000원
[실무중심교육]고용보험 미지원, 일반 과정 입니다.(소수정예, 코딩기반교육) 최소개강 인원 미달시 강좌는 연기될 수 있습니다. 
닷넷과정 나누어서 수강하시기 힘드셨죠?  하나의 과정에서 모든 것을 해결하세요!

결제방법 :계좌이체 / 방문카드결제
교재 :자체교재 or PDF 무료제공


본과정은 C#, 닷넷의 기초부터 WPF, Xamarin까지 진행되는 과정으로 C# 기본문법, 객체지향프로그래밍, C#고급프로그래밍, 윈폼, 데이터베이스 프로그래밍을 위한 ADO.NET, 세련된 윈도우 프로그래밍을 위한 WPF 그리고 크로스 플랫폼 스마트폰 앱개발을 위한 자마린까지 학습하는 최고의 과정 입니다. 

실습위주의 실무교육!
수료조건 : 출석률 80%이상
교육목표
C# 기본문법 이해
C# 객체지향 프로그래밍 이해
C# 고급프로그래밍 이해
C# 윈폼 프로그래밍의 이해
C# 데이터베이스 프로그래밍의 이해
ADO.NET 아키텍처의 이해
WPF 윈도우 프로그래밍 개발방법의 이해
WPF 기본분법의 이해
크로스 플랫폼 앱개발의 이해
Xamarin.Android 이해
Xamarin.iOS 이해
Xamarin.Forms 이해교육대상C#, 닷넷 입문자
C# 기반 윈도우 프로그래머가 되고픈 자
C# 기반 스마트폰 앱개발자가 되고픈 자

교육내용

C# 프로그래밍닷넷이란?(CLI, CLR, CTS, CLS)
Visual Studio 2015 기본 사용법
C#, 변수, 상수, 기본구조
C#, HelloWorld, Main 함수
C#, 연산자
C# 자료형(Value Type, Reference Type)
사용자정의타입(열거형, 구조체)
조건문, 제어문, 반복문(if, switch, for, while, forEach)
가변길이 매개변수(params)
명명된 인수 및 선택적 인수
프로퍼티(Property)
클래스(Class), 객체, 상속, 추상클래스, 인터페이스, 다형성
C# 코드 최적화, 객체생성 및 멤버,필드 초기화
C#에서 다형성 구현 예제 실습
C# new 한정자
C#, 구조체 및 생성자
객체와 메모리(소멸자, Dispose)
C# 봉인 클래스(Sealed) 및 sealed 한정자
C# virtual 한정자
C# partial 클래스
값전달, 참조전달(ref, out)
C# 배열(Array)
깊은 복사(Deep Copy), 얕은 복사(Shallow Copy)
C# 일반화 프로그래밍(Generic)
C# 컬렉션 클래스(Collection Class)
연산자 오버로딩(Operator Overloading)
C# 인덱서(Indexer)
C# 어트리뷰트(Attribute)
C# 델리게이트, 델리게이트 체인
C# 이벤트(Event)
C# 람다식(Lambda Expression)
C# Func, Action 델리게이트
LINQ 쿼리식 기본
C# LINQ(메소드기반 쿼리식)
C# LINQ(여러데이터 원본질의)
C# LINQ(LET)
C# LINQ(GROUP BY)
C# LINQ(조인, JOIN)
C# LINQ(Select, SelectMany)
C# LINQ(JOIN을 메소드 기반 쿼리식으로)
C# LINQ(LINQ TO DATASET)
C# 멀티 쓰레드(Multi-Thread)
C# 멀티 쓰레드(Suspend, Resume)
C# 멀티 쓰레드(AutoResetEvent)
C# 멀티 쓰레드(Thread Join)
C# 멀티 쓰레드(ParameterizedThreadStart)
C# 멀티 쓰레드(우선순위, ThreadPriority)
C# 멀티 쓰레드(동기화, lock)
C# 멀티 쓰레드(동기화, Monitor)
C# 멀티 쓰레드(동기화, Mutex)
C# 윈폼 프로그래밍윈폼(WinForm) 프로그래밍
C# 윈폼(Application 클래스)
C# 윈폼(Application 클래스 – 메시지 필터링)
C# 윈폼(Form클래스)
C# 윈폼(Form클래스 – 속성)
C# 윈폼(Form클래스 – 폼에 컨트롤 올리기)
C# 메시지박스(MessageBox)
Winform에서의 Layout 관리
Menu & Toolbars
Label, CheckBox, RadioButton Control
TrackBar Control
ComboBox Control
MonthCalendar Control
Listbox Control
ListView Control
TreeView Control
OpenDialog, FolderBrowserDialog Control
ColorDialog, FontDialog Control
Drag & Drop
C# 윈폼(GroupBox, Label, ComboBox, CheckBox, TextBox)
C# 윈폼(TrackBar, ProgressBar)
C# 윈폼(Button, Form, Dialog)
C# 윈폼(TreeView, ListView)
C# 윈폼(ADO.NET, ORACLE을 이용한 로그인 프로그램)
ADO.NET 프로그래밍ADO.NET개요, 소개
ADO.NET 아키텍처
ODP.NET, ODAC 설치(32비트, 64비트)
DB Connection
Transaction 예제
ADO.NET을 이용한 데이터 조작(INSERT, UPDATE, DELETE, SELECT)
데이터 어댑터(Data Adapter)
데이터 추출(DataReader, DataSet, DataTable)
WPF 프로그래밍WPF 소개? XAML기반 HelloWorld 따라하기
HelloWorld XAML기반 WPF 프로그램 작동 원리
WPF 클래스 계층구조
WPF HelloWorld-2(C#코드 기반)
WPF 멀티쓰레드 프로그래밍
Dispatcher를 이용한 WPF 멀티쓰레드 프로그래밍
Background Worker를 이용한 WPF 멀티쓰레드 프로그래밍
Background Worker를 이용한 WPF 멀티쓰레드 프로그래밍 실습
XAML 이란?
XAML vs C# 샘플코드
XAML 기초
샘플 코드 이해하기
Content Property란?
XAML 네임스페이스
Load Embedded Xaml(C# 파일의 문자열을 XAML로 파싱하여 실행하기)
XAML을 소스코드와 함께 컴파일
Write Inline C# in XAML
XAML에서 사용자 정의 컨트롤 사용하기
Button을 XAML로 정의하기
Main 메소드 없이 XAML을 만들기
프로퍼티 개요 및 컨텐트 프로퍼티
컨텐트 프로퍼티 덤프 예제
DockPanel, Grid, Button, Dock, RowDefinition, ColumnDefinition 프로퍼티
프로퍼티가 정의되지 않은 엘리먼트에서 속성 정의하기
클래스와 이벤트 이름으로 이벤트 핸들러 정의하기
엘리먼트와 속성 정의하기
의존 프로퍼티(DependencyProperty), 의존속성
입력 이벤트의 라우팅(RoutedEvent), Bubbling, Tunneling
컬러(Color) 구조체
브러시(Brush), SolidColorBrush
브러시(Brush), Gradient Brush(LinearGradientBrush, RadialGradientBrush)
컨텐트(Content), FontFamily, FontSize
버튼(Button)과 Control
패널(Panel)
스택패널(StackPanel)
랩패널(WrapPanel)
DockPanel
그리드(Grid)
캔버스(Canvas)
데이터 바인딩(Data Binding)
데이터 바인딩(Data Binding) 실습(OneWay, TwoWay, OneWayToSource, OneTime)
TwoWay 데이터 바인딩 실습
DataContext를 이용한 데이터 바인딩
DataContext를 이용한 TwoWay 데이터 바인딩 실습
사용자정의 엘리먼트와 ScrollBar 데이터 바인딩
x:Static, Source를 통한 데이터 바인딩(DateTimeFormatInfo를 이용한 요일정보를 ListBox, TextBlock에 바인딩)
Source, SourceResource를 통한 데이터 바인딩
PropertyChanged이벤트, PropertyChangedEventHandler를 통한 데이터 바인딩
MVVM(Model-View-ViewModel) 이란?
데이터 바인딩을 심플 예제
INotifyPropertyChanged 인테페이스를 이용한 데이터 바인딩 예제
데이터 바인딩을 이용한 계산기 실습(MVVM, ViewModel)
데이터 바인딩을 이용하여 오라클 EMP 테이블 데이터를 ListView에 뿌리기(ODP.NET, ItemTemplate)
OracleDataAdapter, LiveView, 데이터 바인딩을 이용하여 오라클 EMP 테이블 데이터를 ListView에 뿌리기(ODP.NET, ItemTemplate)
Linq쿼리식,OracleDataAdapter, LiveView, 데이터 바인딩을 이용하여 오라클 EMP 테이블 데이터를 ListView에 뿌리기(ODP.NET, ItemTemplate)
ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListBox Refresh 적용 실습
Menu, MenuItem, TextBlock, ContextMenu, Toolsbar, StatusBar, Input Control, Dialog, WPF Print
Menu, MenuItem
텍스트블록(TextBlock)
컨텍스트 메뉴(ContextMenu)
캘린더(Calender)
툴바(Toolbar)
상태바(Statusbar)
트리뷰(TreeView)
리스트박스(ListBox)
리스트뷰(ListView)
데이터 그리드(DataGrid)
다이얼로그(Dialog)
메시지 박스(MessageBox) & 툴팁(ToolTip)
OpenFileDialogBox, SaveFileDialogBox, PrintFileDialogBox
Input Controls
Input Controls - PasswordBox
Input Controls – Key Input Control
WPF Printing
WPF Style, Trigger
WPF Style
WPF Triggers(Trigger, MulitiTrigger, DataTrigger, MultiDataTrigger, EventTrigger)
프로퍼티 트리거(Property Trigger)
데이터 트리거(DataTrigger)
이벤트 트리거(EventTrigger), ColorAnimation, DoubleAnimation, DoubleAnimationUsingKeyFrames
WPF Performance Tip
Xamarin 크로스플랫폼 앱개발자마린 개요
자마린 소개?
자마린 설치
자마린 안드로이드(Xamarin.Android)
자마린 특징

[Xamarin.Android]
Hello Android(Xamarin.Android Application) Example
Hello Xamarin Android 구조?
Resources
Xamarin.Android Activity란?
Activity Life Cycle
Hello Xamarin Android의 기타 요소들
Xamarin Android Intent(인텐트)
Simple Intent Example(웹페이지 오픈하기)
Simple Intent Example(현재 위치를 얻은 후 지도에 표시하기, 마시멜로이후 권한 획득방법 구현)
Android Service 개요
Hello Android MultiScreen Example
Built-In List Item Layouts(내장 리스트아이템 레이아웃)
Xamarin.Android(With Native Android Library)
Binding Java Library(Consuming Java libraries from C#)
Xamarin.Android EmbeddedJar Binding(안드로이드 JAR 라이브러리 바인딩)

[Xamarin.iOS]
Xamarin.iOS HelloWorld
Xamarin.iOS HelloWorld 자세히 살펴보기
Architecture and App Fundamentals
User Interface(iOS Designer, Storyboards)
View Controllers and the View Lifecycle
추가적인 사항

[Xamarin.Forms]
Xamarin.Forms Requirements
Xamarin.Forms Quick Start Example
Xamarin.Forms HelloWorld 분석
Xamarin.Forms HelloWorld 프로젝트 구조
Xamarin.Forms HelloWorld Fundamentals
Xamarin.Forms HelloWorld PCL 및 플랫폼별 코드 분석
Xamarin.Forms HelloWorld 사용자 인터페이스
Xamarin.Forms HelloWorld User Interaction
Xamarin.Forms HelloWorld 추가적인 개념
Xamarin.Forms Multiscreen Quick Start Example
Views And Layout
Stack Layout
Lists in Xamarin.Forms
ListView Data Sources
Selecting an Item in a ListView
DataTemplateSelector
ListView, DataTemplateSelector Example
MVVM개요 및 MVVM Example
XAML 데이터 바인딩(Data Binding)
데이터 바인딩(Data Binding) 개요
View-to-View 데이터 바인딩
Backwards 바인딩
MVVM, XAML을 이용한 간단한 계산기 구현
SQLite.Net with Xamarin.Forms
Local SQLite Access Example
Hierarchical Navigation
Pushing Pages to the Navigation Stack
Popping Pages from the Navigation Stack
Passing Data when Navigating
Hierarchical Navigation Example
Login Flow Example
Xamarin.Forms & REST WebService
Rest service를 위한 클래스(HttpClient, HttpResponseMessage, HttpContent, HttpWebRequest)
Xamarin.Forms 안드로이드에서 자바기반 스프링 프레임워크(스프링 부트)로 작성한 웹서비스 호출 실습.
자마린 앱에서 스프링프레임워크/스프링부트 RESTful기반 웹서비스 Call 실습, JSON 파싱하기[웹서비스는 자바,스프링으로 모바일 앱은 자마린으로!]

2018년 1월 31일 수요일

[WPF학원/WPF예제] 프로퍼티 트리거(Property Trigger)

(WPF학원/WPF교육/WPF트리거)프로퍼티 트리거(Property Trigger) 

프로퍼티 트리거(Property Trigger)
n  TriggerBase의 자식 클래스중 가장 일반적인 클래스는 특정 프로퍼티의 변화(어떤 값을 가졌을 때)에 내부에 정의한 Setter 컬렉션이 실행되는 트리거 이다.
n  컨트롤이나 엘리먼트가 반응하는 방법을 정의하는 Trigger 인데 대부분 이 프로퍼티는 IsMouseOver 프로퍼티와 같은 사용자의 입력 프로퍼티를 포함하는데 이때 Trigger는 Setter에서 정의된 프로퍼티를 변경한다.
n  아래 예문에서 최초 TextBlock은 전경색(Foreground)을 Gree 색을 가지지만 마우스가 진입되면 Foreground가 빨강글씨 아래에 Uderline이 생긴다.
<Grid>
        <TextBlock Name="tblk1" Text="Hello, WPF world!" FontSize="30"
                   HorizontalAlignment="Center" VerticalAlignment="Center">
            <TextBlock.Style>
                <Style TargetType="TextBlock">
                    <Setter Property="Foreground" Value="Green"></Setter>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                           <Setter Property="Foreground" Value="Red" />
                           <Setter Property="TextDecorations" Value="Underline" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </Grid>

n  실행화면


n  Trigger의 프로퍼티가 Boolean으로 제한되는 것은 아니지만 흔히 사용되고 이 프로퍼티는 반드시 의존프로퍼티에 의해 지원되어야 하다. (IsMouseOver, ISFocused, IsPressed )
n  Style과 같이 Triggers는 Setters라는 이름의 프로퍼티를 가지고 있으며 이 프로퍼티 Triggers의 컨텐트 프로퍼티(ContentProperty)로 Trigger는 하나 이상의 Setter 엘리먼트를 포함할 수 있다.
n  다른 예제를 하나 살펴보자최초 화면이 로딩될 때 Button 및 TextBlock의 전경색은 빨강, TextBlock의 Text 속성은 “Hello WPF!” 라는 값을 가진다두 컨트롤 모두 마우스가 진입을 하면 프로퍼티 트리거가 동작을 하는데 Button은 전경색을 파랑으로 변경하고, TextBlock은 전경색이 파랑으로, Text 속성은 버튼으로 진입했습니다.”로 변경 된다.

<Window x:Class="WpfApp15.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        Title="MainWindow" Height="200" Width="400">
    <Window.Resources>
        <Style x:Key = "MyStyle">
            <Setter Property = "Control.Foreground" Value = "Red" />
            <Setter Property = "TextBlock.Text" Value = "Hello WPF!" />
            <Style.Triggers>
                <Trigger Property = "Control.IsMouseOver" Value = "True">
                    <Setter Property = "Control.Foreground" Value = "Blue" />
                    <Setter Property="TextBlock.Text" Value="버튼으로 진입했습니다."/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <StackPanel>
        <Button Width = "100" Height = "70"
         Style = "{StaticResource MyStyle}" Content = "Trigger"/>
        <TextBlock Style = "{StaticResource MyStyle}"
                   FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </StackPanel>
</Window>





n  다른 예제를 하나 살펴보자.
n  Trigger 엘리먼트가 같은 프로퍼티를 두번 설정하면 뒤 Trigger 엘리먼트는 이전의 것을 오버라이딩 한다이전 예제에서 두 Trigger 프로퍼티의 순서를 바꾸면 전경색은 빨강으로 바뀔 수 없다. IsPressed가 true이면 IsMouseOver 역시 true이기 때문이다버튼에 마우스를 누르려면 버튼 안으로 마우스가 진입해야 하므로 항상 IsMouseOver 상태가 된다.
n  IsMouseOver가 true일 경우 텍스트를 파랑으로 표시하라는 것이 IsMouseOver Trigger의 마지막에 재정의 되어 명시되었기 때문에 재정의된 마지막 것이 적용된다.

[MainWindow.xaml]
<Window x:Class="WpfApp6.MainWindow"
        xmlns:local="clr-namespace:WpfApp6"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <StackPanel.Resources>
            <Style x:Key="normal">
                <Setter Property="Control.FontSize" Value="24" />
                <Setter Property="Control.HorizontalAlignment" Value="Center" />
                <Setter Property="Control.Margin" Value="24" />
                <EventSetter Event="Button.Click" Handler="ButtonOnClick" />
                <Style.Triggers>
                    <Trigger Property="Control.IsMouseOver" Value="true">
                        <Setter Property="Control.FontStyle" Value="Italic" />
                        <Setter Property="Control.Foreground" Value="Blue" />
                    </Trigger>
                    <Trigger Property="Button.IsPressed" Value="true">
                        <Setter Property="Control.Foreground" Value="Red" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </StackPanel.Resources>

        <Button Style="{StaticResource normal}">
            Button Number 1
        </Button>

        <Button Style="{StaticResource normal}">
            Button Number 2
        </Button>

        <Button Style="{StaticResource normal}">
            Button Number 3
        </Button>
    </StackPanel>
</Window>

[MainWinow.xaml.cs]
using System.Windows;
using System.Windows.Controls;
using System.Threading;

namespace WpfApp6
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        void ButtonOnClick(object sender, RoutedEventArgs args)
        {
            Thread.Sleep(1000);
            Button btn = args.Source as Button;
            MessageBox.Show(btn.Content + " has been clicked", Title);
        }
    }
}

n  순서를 정의하기가 어려운 경우 MultiTrigger를 고려하면 되는데 MultiTrigger는 2개나 그이상의 조건이 만족할 때 발생된다는 것을 제외하면 Trigger와 유사하다.


<Window x:Class="WpfApp6.MainWindow"
        xmlns:local="clr-namespace:WpfApp6"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <StackPanel.Resources>
            <Style x:Key="normal">
                <Setter Property="Control.FontSize" Value="24" />
                <Setter Property="Control.HorizontalAlignment" Value="Center" />
                <Setter Property="Control.Margin" Value="24" />
                <EventSetter Event="Button.Click" Handler="ButtonOnClick" />

                <Style.Triggers>
                    <Trigger Property="Button.IsPressed" Value="True">
                        <Setter Property="Control.Foreground" Value="Red" />
                    </Trigger>

                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="Control.IsMouseOver" Value="True" />
                            <Condition Property="Button.IsPressed" Value="False" />
                        </MultiTrigger.Conditions>
                        <Setter Property="Control.FontStyle" Value="Italic" />
                        <Setter Property="Control.Foreground" Value="Blue" />
                    </MultiTrigger>

                </Style.Triggers>
            </Style>
        </StackPanel.Resources>

        <Button Style="{StaticResource normal}">
            Button Number 1
        </Button>

        <Button Style="{StaticResource normal}">
            Button Number 2
        </Button>

        <Button Style="{StaticResource normal}">
            Button Number 3
        </Button>
    </StackPanel>
</Window>