지난 포스팅에서는 TreeView의 확장(Expand) 버튼을 클릭했을 때 이벤트를 ViewModel에서 수신받는 방법을 알아봤습니다. 이번에는 확장할 때 현재 노드(디렉토리)의 자식을 추가하는 기능을 추가합니다. 윈도우의 파일탐색기 역시 같은 방식을 사용하고 있습니다. 구현 시 고려해야 할 내용은 노드를 추가할 때 자식 노드를 가지고 있는지 미리 확인해야 한다는 점입니다. ✅TreeView: 확장 시 자식 Directory 추가 Drive 정보 프로그램 실행 시 최초에 Drive 정보를 가져와서 TreeView에 추가합니다. ExplorerMainViewModel() 의 생성자에서 이를 수행합니다. 드라이브 정보를 읽어서 TreeView에 추가하는 코드는 아래와 같습니다. private void Add..
프로젝트/WPF 파일탐색기
저번 포스팅에서는 프로그램이 시작될 때 모든 폴더 구조를 읽어서 트리형태로 미리 만들어두고 이를 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..
윈도우의 파일탐색기는 윈도우라는 운영체제를 사용하면서 가장 많이 사용하는 프로그램 중에 하나입니다. 당연하게 사용하긴 하는데 직접 만들려고 생각해 보니 은근히 까다롭습니다. 개인 프로젝트로 WPF 개발은 이게 마지막이 될 것 같습니다. 개발 중에 발생하는 팁은 따로 포스팅할 예정입니다. ✅ Windows 파일탐색기 만들기 #1 : 기획 초안 기획 초안 UI 구조 실행 프로젝트는 따로 만들고 UserControl 라이브러리 프로젝트를 생성해서 탐색기 부분을 만듭니다. Windows11의 파일탐색기를 보면 상단에 TabControl이 있습니다. TabControl의 Item으로 UserControl로 만든 탐색기를 넣을 예정입니다. TabControl에 최소화, 최대화, 닫기 버튼을 넣을지 별도로 만들지는 ..