WPF 팁

Form Designer 프로젝트 #1 - 프로젝트 관리 화면 안떠니 평점: 10.0/10 (2명 참여) 조회: 6535
데프피아 WPF 게시판에 강좌를 올리고 나서, 1시간 걸쳐 쓴 강좌글이 사라진 것을 보고 너무 허무했습니다.
그러던 와중 게시물에서 데브피아는 WPF/C# 이 조용하고 사람이 드물고 여기 훈스넷에 좀 있다는 글을 보았습니다.
그래서, 여기에 먼저 글을 올리려고 합니다.

다시 본론으로, 저를 간단히 소개하면, 저는 델파이를 약 20년을 사용해 온 사람입니다.
물론 20년 동안 순수 개발만 한 것은 아니고 매니저로 있으면서 뒤에 있기도 했습니다.

지금도 회사에서는 Business Analyst 라는 직함을 갖고 있지만, 부직함으로 소프트웨어 엔지니어를 갖게 되었습니다.
회사 내부 사정과 저의 자질(?) 때문에요. 여튼 그래서, 회사에서 폼 디자이너를 만들라는 지시를 받았습니다.

이렇게 만들면, 되냐고 간단히(사실, 거의 95% 완성품) 델파이로 만들어서 보여줬습니다.
시작해서 보여주는데까지 2일 걸렸네요. 당연하겠죠. 델파이만 20년 가까이 만졌으니까요.
회사에서는, 어...그게 우리가 원하는거야. 자, 이제 WPF/C#/MVVM 을 활용해서 만들어봐.

저는 사실 .NET 환경에서 개발한 실전 경험이 전무합니다. 1달 ASP.NET 교육 받은게 아무 전부인듯 ㅎㅎ
그래서, 저와 같은 배경의 사람과 초보자들을 위해 제가 개발해 가는 과정을 단계별로 마무리하면서,
강좌 겸 소스를 공개하려고 합니다. 많은 도움이 되었으면 좋겠습니다.

자 그럼....

제목: BOS(Back Office System) 어플리케이션의 메뉴 구성과 각 메뉴의 입력폼/출력폼 디자인하는 툴

이러한 툴을 만들기 위해서는, 우선 3개의 창을 구상했습니다.

1. 프로젝트 관리창
2. 기본 폼 (각 메뉴의 폼을 디자인하는 용도)
3. 툴 박스 창 (에디트, 버트 등의 콘트롤을 지정하고 기본 폼으로 가져오는 툴박스)

* 각 콘트롤의 기본 속성 (캡션, 텍스트, 글자색, 배경색 등의)을 위한 창은 없는 것으로 시작했습니다.
왜냐하면, 3개의 창이 폼 위에 떠 있으면 디자인하는데 너무 거슬릴 것 같아서요 ^^;
* 나중에, 폼 위에 콘트롤을 더블클릭하거나 우측클릭해서 기본 설정을 물어보게 할까 고려중입니다.


이번 글에서는, 프로젝트 관리창을 만들어 보겠습니다.

우선, 이 창의 기능은 프로젝트를 시작하고, 기존 프로젝트를 불러오고, 등등의 일을 하게 됩니다.
그래서 상단에 버튼 4개, 중간에 TreeView 하나, 하단에 버튼 4개를 배치시켰습니다.

하나씩 기능을 정의해 봅니다.

New Prj : 새 프로젝트 시작, TreeView 에 작업하던게 있으면, 경고 보내고, 모든 노드 삭제함.
Open Prj : 기존에 작업했던 프로젝트 파일을 불러와서 Treeview 에 다시 보여줌.
Save Prj : 현재 TreeView 의 내용을 파일로 저장. xml 로 저장할지 txt 로 저장할지 결정못함. WPF/C# 잘몰라서 ^^;
Show in IE : TreeView 의 있는 노드를 갖고 각 html 페이지를 만들고 상하위 노드를 이동할 수 있게 링크 추가함.

하단의 버튼들은 

Add Item : TreeView 가 비어 있을때는 Log-in 을 추가함. 아니면, 선택된 노드를 부모로 두고 하위에 노드를 추가함.
Remove Item : 현재 선택된 노드를 삭제함.
Rename Item : WPF 에서 제공되는 TreeView 는 in-place editing 이 제공 안되는 관계로 InputBox 띄우기 위해 버튼둠.
Save Form : 폼을 디자인하는 창의 내용을 저장함. xaml 을 저장해야 할 듯...이건...그때 가서..다시.. ㅎㅎ

이런 화면 구성으로






위의 폼을 디자인하고 각 콘트롤에게 이름을 주고 나면, 아래와 같은 XAML 코드가 되겠죠.
아래에서, Grid 를 3개의 행으로 나누었습니다. 첫 행은 상단 버튼들, 두번째 행은 TreeView.
셋번째 행은 하단 버튼을 배열하기 위해서요.

본능적으로(?) DockPanel 을 쓴 것이지, 알고서 쓴 것은 아닙니다.
따라서, 폼을 리사이징할 때 이 DockPanel 도 따라서 리사이즈되고, 버튼들도 같이 리사이징 되었으면,
좋겠는데요. 아직 방법을 몰라서 일단 패스합니다. 나중에 알게되면, 추가하겠습니다.

그리고, 아래의 코드에서, SelectedItemChanged 이벤트의 선언은 필요가 없게 되었습니다.
처음에는 트리뷰에 있는 노드(=아이템)을 선택할 때마다 선택된 노드를 변수로 저장하고 삭제나 이름 변경을
처리할려고 했는데, 코딩을 하다 보니, 그럴 필요가 없다는 걸 알게 되었습니다.

혹시 몰라서, 그냥 이벤트 선언은 지우지 않고 아래처럼 그냥 두었습니다.





<끝>
태그 : Designer Form Treeview
작성자 정보
안떠니
Level 29
 [EXP.19/50]

메일:  비공개
글등록 +12 456 덧글등록 +3 249
자기소개
회사에서 WPF C# 으로 프로그램을 만들라고 하네요 ^^; (2013년) 2017년, Selenium, NUnit, ExtentReports 로 자동화를 하라고 하네요 ^^
글 공유하기 |
  tweet facebook
2013-02-09 오전 2:38:01
나도한마디
사용자
HOONS            [2013-02-14]
Level 99
 [EXP.만랩]
존경합니다. 10년만 지나도 계속 하기 힘든 부분이 있다 하던데
20년 씩이나 계속 하고 계시니깐요
백발의 코더님이시군요 (_ _ㅋ)
사용자
안떠니            [2013-02-14]
Level 29
 [EXP.19/50]
회사 내에서는 대외적으로 개발자로 되어 있지 않습니다.
고객과의 계약 조건 때문에 Business Analyst 로 되어 있죠.
요즘 한가해서, 필요한 유틸리티 개발을 저에게 의뢰하고 있는거구요.

취미가 전공이 되고 직업이 된 경우라서, 지루하거나 슬럼프 없이...
해 오고 있네요. ㅎㅎ

백발이 아님을 알리기 위해, 사진을 실제 얼굴로 바꿨습니다. ㅋㅋㅋ
사용자
맨날맑음            [2013-02-14]
Level 74
 [EXP.183/250]
저도 20년후에 개발자를 하고 싶어요!!
안떠니님의 열정에 박수를 보냅니다!!
사용자
영미니Oo            [2013-05-14]
Level 26
 [EXP.5/50]
멋지십니다.
사용자
teddy            [2015-01-18]
Level 1
 [EXP.3/16]
좋은 강좌 감사합니다! 경력이 존경스럽습니다.@.@
태그로 엮인글
[C#.NET Q&A] 창크기 조절시 최적화 문제...  뭉킨
[ASP.NET Q&A] form 에서 target 으로 _blank를 했는데 팝업으로 열고 싶습니다...  흩날이
[C#.NET Q&A] treeview정보를 클릭하면 listview에 가져오고 싶습니다.[1]  saki
[C#.NET Q&A] C# TreeVeiw 에서 클릭으로 AfterSelect 가 아닌 시작하자마자 TreeView에 있는 원하는 노트...[1]  너구리꼬리
[C#.NET Q&A] C# Winform MS-Chart 사용에 관한 질문입니다.[1]+1 파일첨부 필승불패
[C#.NET Q&A] TreeView 메뉴 구성후 MenuStrip으로 띄우기[2]  짱구파워
[C#.NET Q&A] Listview 선택 시 Treeview 에 있는 Node 선택 되게 하는 방법[1]  눈팅
[C#.NET Q&A] [재질문] 동적으로 생성한 treenode에 index로 접근하는 방법?[1]  pangloss
[C#.NET Q&A] treeview 동적 자식노드 할당  pangloss
[C#.NET Q&A] 서로다은 폼에서의 메소드 접근이 가능한가요??[3]+6  훈스남훈남조으다
글리스트
RadioButton ListBox 샘플 파일첨부 이재웅
UniformGrid ListBox 샘플 파일첨부 이재웅
Horizontal ListBox 샘플 파일첨부 이재웅
Vertical ListBox 샘플[2] 파일첨부 이재웅
Form Designer 프로젝트 #7 - Tool Window (콘트롤 속성 지정/변경) - 완료![1]+1  안떠니
Form Designer 프로젝트 #6 - Tool Window (콘트롤 추가/삭제) - 완료![3]+1  안떠니
Form Designer 프로젝트 #5 - TreeView Manager  안떠니
Form Designer 프로젝트 #4 - TreeView + XML [1]  안떠니
Form Designer 프로젝트 #3 - TreeView 삭제 / 이름변경[2]+2  안떠니
Form Designer 프로젝트 #2 - TreeView 노드 추가[1]  안떠니
 ★현재글->   Form Designer 프로젝트 #1 - 프로젝트 관리 화면[4]+1  안떠니
실행파일에서 config 파일 변경하기[1]+3  킴언어
계산기[3]  sa2랑
WPF 성능관리  sa2랑
[RE] WPF Performance Suite  sa2랑
WPF에서 내부에서 작업한 내용을 UI에 올릴때 Dispatcher 클래스 사용[1]  지유니
VS와 Blend에서 화면구조 보기 파일첨부 깜디
Canvas 의 Preview 기능 구현하기[1] 파일첨부 깊은물
[Command] 하나의 컨트롤에 여러 커맨드를 등록하는 법[1]  깜디
[UX 스터디 자료] WPF 자료[5] 파일첨부 sky
DataView를 이용해서 소팅하는 방법  지유니