회사 업무로 진행한 신규 개발 프로젝트입니다. Winform으로 개발된 프로그램이 있는 상황에서 수정이 필요한데 기존 개발자분이 퇴사하셔서 제가 맡게 되었습니다. Winform으로도 간단한 개발은 경험이 있기 때문에 할 수 있겠거니 했는데 너무너무 어렵습니다... 계측기 UI 재개발 프로젝트 후기 요구 사항 해상도 변경 사용자 입력 UI 변경 속도 개선 문제점 하루반나절 정도 코드 이해 및 수정을 검토했으나 포기하고 WPF로 재개발을 결정했습니다. 가장 큰 문제점은 코드가 너무나도 보기 어렵습니다. 1. 너무 긴 함수의 소스코드 - 함수 1개가 1000 line 이 되는 소스코드를 보는 것은 너무나도 힘든 일이었습니다. 2. 이해하기 어려운 함수명, 변수명 - 코드가 길면 변수명이라도 이해가 되면 도움이..
프로젝트

지난 포스팅에서는 TreeView의 확장(Expand) 버튼을 클릭했을 때 이벤트를 ViewModel에서 수신받는 방법을 알아봤습니다. 이번에는 확장할 때 현재 노드(디렉토리)의 자식을 추가하는 기능을 추가합니다. 윈도우의 파일탐색기 역시 같은 방식을 사용하고 있습니다. 구현 시 고려해야 할 내용은 노드를 추가할 때 자식 노드를 가지고 있는지 미리 확인해야 한다는 점입니다. ✅TreeView: 확장 시 자식 Directory 추가 Drive 정보 프로그램 실행 시 최초에 Drive 정보를 가져와서 TreeView에 추가합니다. ExplorerMainViewModel() 의 생성자에서 이를 수행합니다. 드라이브 정보를 읽어서 TreeView에 추가하는 코드는 아래와 같습니다. private void Add..

저번 포스팅에서는 프로그램이 시작될 때 모든 폴더 구조를 읽어서 트리형태로 미리 만들어두고 이를 TreeView에 Binding 했습니다. 최초 실행 시 시간이 오래 걸린다는 점과 필요 이상의 메모리를 사용한다는 문제가 있습니다. 이를 해결하려면 폴더의 정보가 필요한 시점에 필요한 폴더 정보만 읽어오면 됩니다. ✅ TreeViewItem Expanding Event 결국 폴더를 확장할 때 하위 폴더 목록을 읽어서 현재 폴더(TreeViewItem)의 자식 아이템으로 추가하면 시작할 때 모든 폴더의 정보를 읽을 필요가 없습니다. 그럼 TreeViewItem의 Expanding 이벤트가 발생했을 때 위 내용을 처리하면 됩니다. 안타깝게도 Expanding 이벤트를 MVVM에서 사용하려면 Behavior를 사..

이전 포스팅에서는 폴더 정보가 표시될 TreeView에 임의의 데이터를 넣었습니다. 이번에는 실제 Windows 폴더 정보를 TreeView에 채우겠습니다. 드라이브 정보를 구하고 각 드라이브의 폴더를 재귀함수로 돌면서 다중 트리를 생성합니다. 그리고 TreeView와 DataBinding 된 ViewModel을 통해 TreeView에 폴더가 표시됩니다. 자료구조: 다중 트리 (Multi-Tree) 자료구조의 트리란,부모 노드 밑에 여러 자식 노드가 연결되고, 자식 노드 각각에 다시 자식 노드가 연결되는 재귀적 형태의 자료구조다. 단, 자식 노드의 자식이 부모로 연결되는 경우는 보통 endtime-co-kr.tistory.com ✅ TreeView에 실제 폴더 보여주기 GetAllDirectoryFrom..

좌측에 폴더가 표시될 TreeView에 임의로 값을 채워보겠습니다. 나중에는 폴더 정보를 읽어서 TreeView에 Binding 해줘야겠지요. 우선 ViewModel에서 Tree를 만들고 ViewModel:Tree를 TreeView에 Binding 해보겠습니다. TreeView는 HierarchicalDataTemplate이라는 조금 피곤한 Template을 사용해야 합니다. 이 Template은 TreeView, Menu에서 주로 사용하는데 부모-자식으로 이루어진 데이터구조를 처리합니다. ✅ TreeView에 Data 표시하기 다중 트리 우선 다중트리를 만들어서 트리에 값이 제대로 들어가는지 확인했습니다. [C#] - 자료구조: 다중 트리 (Multi-Tree) 자료구조: 다중 트리 (Multi-Tre..

Windows 탐색기 만들기 두 번째입니다. Explorer (UserContol)의 View에 Grid를 사용해 적당히 Layout을 잡습니다. 어차피 Style 적용하면서 수정하게 될 테니 Control을 배치할 영역만 만들어주겠습니다. 그리고 폴더를 탐색할 TreeView와 폴더 내부의 Item을 보여주는 DataGrid를 배치합니다. ✅ Windows 파일탐색기 만들기 #2 (초기 Layout) View: Grid Design 위와 같이 적당히 Grid 정의를 합니다. 코드는 아래와 같습니다. xaml View: TreeView, DataGrid TreeView는 좌측, DataGrid는 우측에 배치합니다. TreeView와 DataGrid 사이에는 GridSplitter가 들어갈 예정입니다. D..