728x90
반응형
LIST

Grid 패널은 한 번에 하나의 행이나 하나의 열을 사용하는 것보다 패널의 전체 영역에 걸쳐 그리드 형태로 요소드를 정렬한다. 이로 인해 하나의 행에서 결정된 고정된 위치가 다음 행에도 적용될 수 있다.

 

Grid 패널은 우리가 얼마나 많은 열과 행을 필요로 하는지 알아야 하며, 우리는 Grid 패널의 첫 부분에서 ColumnDefinition 요소와 RowDifinition 요소를 이용해 필요한 행과 열의 수를 지정할 수 있다.

그럼에도 불구하고 Grid 패널의 코드는 그다지 장황해 보이지는 않는다. Grid 패널 자신이 가지는 일련의 속성들은 어떻게 보면 더 단순해 보인다. 그러나 각 열과 행의 특성들을 독립적으로 제어해야 할 필요가 있을 것이다. 그래서 Grid 패널은 Grid 패널이 아닌 각 요소들이 자신이 어디에 어떻게 보여질지를 결정하도록 한다.

 

 

 

위와 같이 Grid 의 전체적인 속성을 설정해준 다음, Grid 의 구성에 대해 정의를 해주어야 한다.

Grid 구성 정의가 완료되면, 그 아래에 각 요소에 값을 넣어주게 된다.

 

※ Grid 패널은 0을 기준으로 번호를 매긴다. 따라서 (0,0)은 가장 왼쪽 위의 칸을 의미하게 된다,

 

[ 실행 결과 ]

 

 

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

[ 레이아웃(Layout) ] UniformGrid  (0) 2021.12.23
[ 레이아웃(Layout) ] Canvas  (0) 2021.12.23
[ 레이아웃(Layout) ] DockPanel  (0) 2021.12.23
[ 레이아웃(Layout) ] WrapPanel  (0) 2021.12.23
[ 레이아웃(Layout) ] StackPanel  (0) 2021.12.23
728x90
반응형
LIST

DockPanel은 간단한 사용자 인터페이스의 전체적인 레이아웃을 표현하는 데 매우 유용하다.

 

DockPanel은 각 자식 요소를 지정된 면에 결합하여 정렬한다. 만일 여러 자식 요소가 동일한면에 결합되도록 지정되면 요소들을 해당 면에서부터차례대로 쌓아 올린다. 기본적으로 마지막 요소는 패널의 4면에 결합된 다른 컨트롤들이 사용하지 않는 남는 공간을 채우게 된다.

 

 

 

위 소스를 분석해보면, '위' 버튼과 '아래'버튼이 윈도우의 위쪽과 아래쪽 면에 결합되어 있으며, '왼쪽'과 '오른쪽'버튼은 윈도우의 왼쪽과 오른쪽 면을 모두 사용하지는 못하고 있다. 이는 '위'버튼과 '아래'버튼이 먼저 패널에 추가되었기 때문이다.

 

[ 실행 결과 ]

 

 

 

 

 

 

위의 내용들을 참고해서 '왼쪽'과 '오른쪽'버튼이 먼저 나타나도록 하여 두 버튼이 각자의 면을 모두 차지하고 '위'와 '아래'버튼은 나머지 공간만을 사용하게 하려면 아래와 같이 하면 된다.

 

 

버튼 소스의 순서만 바꿔주었다.
 
[ 실행 결과 ]

 

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

[ 레이아웃(Layout) ] Canvas  (0) 2021.12.23
[ 레이아웃(Layout) ] Grid Panel  (0) 2021.12.23
[ 레이아웃(Layout) ] WrapPanel  (0) 2021.12.23
[ 레이아웃(Layout) ] StackPanel  (0) 2021.12.23
레이아웃(Layout) 기초  (0) 2021.12.23
728x90
반응형
LIST

WrapPanel은 StackPanel 과 비슷하지만 StackPanel 보다 공간에 대한 제약이 적다.

만일 수평으로 정렬된 WrapPanel에 많은 요소를 추가하면 마치 줄을 서있는 것과 유사한 방식으로 콘텐츠를 정렬한다. 

WrapPanel은 공간이 모두 채워질 때까지 왼쪽에서 오른쪽으로 요소를 배치하며, 공간이 모두 채워지면 다음 줄부터 다시 배치한다.

 

WrapPanel 은 Orientation을 설정하지 않았을 경우, Horiaontal 을 기본값으로 가지고 있다.

 

 

[ 실행 결과 ]

 

 

 

위와 같이 WrapPanel은 여유공간이 모두 채워질 때까지 왼쪽부터 오른쪽으로 채워진 후 다음 줄로 이동하여 나머지 내용을 채운다.

 

위 실행결과는 Orientation 이 Horizontal 일 경우를 보여준 것인데, Vertical 로 설정 했을 경우에도 마찬가지이다.

 

 

 

위와 같이 Vertical 의 경우 위에서 아래로 공간을 채워 나간 뒤 나머지 내용은 그 다음줄로 넘어가 채우게 된다.

 

WrapPanel과 StackPanel은 작은 크기의 레이아웃에 적합하다는 것을 알고 사용하면 유용하다.

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

[ 레이아웃(Layout) ] Grid Panel  (0) 2021.12.23
[ 레이아웃(Layout) ] DockPanel  (0) 2021.12.23
[ 레이아웃(Layout) ] StackPanel  (0) 2021.12.23
레이아웃(Layout) 기초  (0) 2021.12.23
단일 인스턴스 응용 프로그램  (0) 2021.12.23
728x90
반응형
LIST

StackPanel은 자신의 자식 요소를 행이나 열에 나열하는 매우 간단한 패널이다. 이 Panel 은 작게 구분된 영역을 정렬하는 데 유용하다.

 

행과 열로 나열을 하기 때문에 Orientation 의 종류인 vertical 과 horizontal 을 알면 유용할 것이다.

 

 

 

 

[ 실행 결과 ]

 

    
 
 
이 실행결과는 Orientation 을 Vertical 로 했을 때의 결과이다.
만약 Orientation 을 Horizontal 로 변경을 하게 되면 아래와 같은 결과가 나타나게 된다.
 

 

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

[ 레이아웃(Layout) ] DockPanel  (0) 2021.12.23
[ 레이아웃(Layout) ] WrapPanel  (0) 2021.12.23
레이아웃(Layout) 기초  (0) 2021.12.23
단일 인스턴스 응용 프로그램  (0) 2021.12.23
[STAThread] 란?  (0) 2021.12.23
728x90
반응형
LIST

[주요 패널 타입]

 

패널 타입 설명 
 StackPanel 자식 요소들을 수직 또는 수평으로 순서대로 나열한다. 
매우 간단하며, 레이아웃의 관점에서 볼 때 작은 부분을 관리하기에 유용하다.
 WrapPanel 자식 요소들을 왼쪽에서 오른쪽으로 나열하며, 적절한 너비를 벗어날 때마다 새로운 줄을 만들어낸다.
DockPanel  패널 영역의 각 면에 각각의 자식 요소를 위치시킨다.
간단한 응용 프로그램에서 대략적인 레이아웃을 정의할 때 유용하다. 
Grid  자식 요소들을 그리드 내에 정렬한다. 
아이템들을 고정된 크기와 위치로 재조정할 필요 없이 정렬하고자 할 때 유용하다. 내장된 패널 타입 중 가장 강력하다. 
 Canvas 어떤 레이아웃 로직도 실행하지 않는다. 자식 요소를 원하는 곳에 배치할 수 있으며, 개발자가 직접 레이아웃 프로세스를 제어해야 한다, 
 UniformGrid 모든 자식 요소를 각각의 그리드 칸에 동일한 크기로 나열한다. 

 

 

※  기본적으로 패널들은 화면에 나타나지 않으며, 자식 요소들의 크기나 위치로 미루어 짐작하는 것이 유이하게 패널이 존재하고 있음을 알 수 있는 방법이다. 그러나 Background 속성을 이용하여 배경색을 지정함으로써 패널이 보이도록 할 수 는 있다.

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

[ 레이아웃(Layout) ] WrapPanel  (0) 2021.12.23
[ 레이아웃(Layout) ] StackPanel  (0) 2021.12.23
단일 인스턴스 응용 프로그램  (0) 2021.12.23
[STAThread] 란?  (0) 2021.12.23
XAML에서 Window 선언하기  (0) 2021.12.23
728x90
반응형
LIST

단일 인스턴스 응용프로그램을 개발하고자 한다면 이미 실행 중인 인스턴스를 감지한 후 이후에 실행되는 인스턴스들을 종료하는 방법으로 쉽게 개발이 가능하다.

 

우리는 흔히 응용 프로그램의 다중 인스턴스 지원으로 인해 EXE 파일을 여러번 실행하게 되면 아래와 같이 실행 되는 것을 볼 수 있다.

 

 

 

 

 

이러한 다중 인스턴스를 방지하기 위해 단일 인스턴스 또한 존재한다.

핵심은 Windows 운영체제의 뮤텍스(mutex) 객체에 세션 내에서 유일한 이름을 붙여 액세스하는 것이다. 뮤텍스 객체는 일단 생성되면 프로세스의 수명 주기를 위해 존재하는 WPF의 Application 객체 자체의 수명 주기를 위해 존재하게 된다. 그러므로 우리가 처음으로 뮤텍스를 생성하는 것이 아니라면 응용 프로그램을 종료하여 프로세스로부터 빠져나와야 한다.

 

그러나 현 시점에서 울가 알아야 할 것은 단일 인스턴스를 감지하는것이 우리에게 필요한 유일한 기능이 아니라는 점이다. 즉, 우리는 다음과 같은 사항들이 필요하다.

  - 최초 인스턴스에 명령 줄 인수를 전달한다.

  - 최초 인스턴스의 주 윈도우를 활성화한다.

  - 하나의 컴퓨터에 로그인한 여러 사용자 계정을 응용 프로그램의 인스턴스에 적절히 배분한다.

 

 

[ Mutex 적용 ]

 

 

 

 

 

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

[ 레이아웃(Layout) ] StackPanel  (0) 2021.12.23
레이아웃(Layout) 기초  (0) 2021.12.23
[STAThread] 란?  (0) 2021.12.23
XAML에서 Window 선언하기  (0) 2021.12.23
외관과 행동의 역할을 하는 프로그램  (0) 2021.12.23
728x90
반응형
LIST

STAThread란, 우리가 흔히 WPF 코딩을 하면서 자주 만나볼 수 있다. 하지만 무슨 기능인지 무엇을 뜻하는지 모르고 쓰는 사용자들을 위해 포스팅을 해봅니다.

 



  class MyApp
  {
      [STAThread]
      static void Main()
      {
          // WPF 메시지 상자
          MessageBox.Show("Hello, WPF");
      }
  }

 

단일 스레드 아파트먼트(Single Thread Apartment)는 네이티브 COM 객체 모델의일부로서 COM 호출에 대한 직렬화를 처리하기 위해 구현되었다.

Win32 네이티브 기술이든 관리되는 기술이든 간에 모든 마이크로소프트의 프레젠테이션 프레임워크는 다른 스레드나 COM 서비스 (예를 들면 드래그 앤 드롭과 같은)와 통합될 수 있도록 STA 스레드에 의해 초기화되는스레드에서 실행되어야 한다.

728x90
반응형
LIST
728x90
반응형
LIST

최상위 요소인 Window는 XAML의 XMl 네임스페이스로부터 Class 특성에 지정된 이름의 클래스의 일부를 선언하기 위해 사용되었다. 두 개의 XML 네임스페이스 선언은 일반적으로 XAML이 동작하기 위해 필요한 두 가지를 끌어오는데, 하나는 XAML 자체이며, 다른 하나는 WPF를 위한 것이다.

 

 

 

 

주의할 점은 XAML에 의해 생성된 클래스에는 click 이벤트 핸들러에 대한 정의가 없다는 것이다. 이벤트 핸들러나 다른 초기화 작업, 도우미 클래스 등을 사용하려면 XAML 파일은 자신과 쌍을 이루는 코드 비하인드 파일이 필요하다. 이 파일은 외관이 정의된 XAML 파일의 뒤에서 그 동작을 정의하기 위해 .NET 언어로 작성된 코드를 가지고 있다. 일반적으로 이 코드 비하인드 파일의 이름은 .xaml.cs 확장자를 가지며, XAML로 정의되지 않은 것들만을 가진다.

 

 

 

[ 실행 결과 ]

 

 

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

단일 인스턴스 응용 프로그램  (0) 2021.12.23
[STAThread] 란?  (0) 2021.12.23
외관과 행동의 역할을 하는 프로그램  (0) 2021.12.23
Application 을 이용한 WPF 응용 프로그램  (0) 2021.12.23
WPF 시작하기  (0) 2021.12.23
728x90
반응형
LIST

이번 프로그램은 윈도우와 자식 윈도우의 속성을 설정하는 초기화 코드에 의해 표현되는 '외관'과

이벤트 처리 코드로 표현할 수 있는 '행동'으로 나누어서 혼합을 시킬 것이다.

 

Window1 클래스를 보면 완전히 다른 두개의 코드가 혼합되어 있다.

 

여기서 '외관'이란 조금 더 예술적인 감각을가진 누군가가 처리해 주기를 바라는 부분이고,

'행동'이란 코더를 위해 남겨둘 부분을 말하는데, 이 둘을 서로 분리하는 것은 좋은 방법이다.

 

 

 

 

 

[ 실행 결과 ]

 

 

 

이상적으로 우리는 필수적인 '외관' 코드를 드래그 앤 드롭에 적합한 선언적 형태로 바꾸고 싶어 한다.

 

WPF를 위한 선언적 형태는 XAML이다.

XAML은 .NET 객체를 생성하고 초기화하기 위한 XML 기반의 언어이다.

비록 WPF에 구현된 것보다는 CML에서 지원하는 다양한 타입들을 위해 사용되기는 하지만 XAML은 WPF에서 사람이 UI를 기술하기 위한 방법으로 사용된다.

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

[STAThread] 란?  (0) 2021.12.23
XAML에서 Window 선언하기  (0) 2021.12.23
Application 을 이용한 WPF 응용 프로그램  (0) 2021.12.23
WPF 시작하기  (0) 2021.12.23
WPF 공부를 시작하면서....  (0) 2021.12.23
728x90
반응형
LIST
이번 프로그램은 수명주기를 이용한 프로그램 중에 StartUp을 이용한 프로그램이다.

 

 
 
이 예제에서 MyApp 클래스는 Application 기반 클래스로부터 파생된다.
Main 함수에서 우리는 MyApp 클래스의 인스턴스를 생성하고 StartUp 이벤트 핸들러를 추가한 후 
Run 메소드를 호출하여 응용 프로그램을 실행한다.
 
StartUp 이벤트 핸들러는 WPF에 내장된 Window 클래스의 인스턴스를 통해 예제의 최상위 윈도우를 만들어낸다.
 
 
 
[실행결과]

 

728x90
반응형
LIST

'IT개발/정보 > WPF' 카테고리의 다른 글

XAML에서 Window 선언하기  (0) 2021.12.23
외관과 행동의 역할을 하는 프로그램  (0) 2021.12.23
WPF 시작하기  (0) 2021.12.23
WPF 공부를 시작하면서....  (0) 2021.12.23
WPF 소개  (0) 2021.12.23

+ Recent posts