Skip to content

JamesnetGroup/wpf-explorer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WPF Explorer English 中文 한국어

Windows Explorer 클론에서 MVVM, 사용자 정의 컨트롤, 현대적인 UI/UX 디자인을 포함한 고급 WPF 기술을 선보입니다.

License: MIT .NET Stars Issues

프로젝트 개요

WPF Explorer는 "WPF INSIDE OUT" 책의 핵심 예제 프로젝트로, WPF(Windows Presentation Foundation)의 고급 기능을 탐구하고 실습하기 위해 설계되었습니다. 이 프로젝트는 WPF를 사용하여 Windows Explorer의 기능을 복제하며, MVVM 아키텍처, 의존성 주입, 사용자 정의 컨트롤, 고급 스타일링 기법 등 다양한 고급 WPF 기술을 적용합니다.

이 프로젝트를 통해 개발자들은 다음과 같은 실용적인 WPF 기술을 배울 수 있습니다:

  • 복잡한 UI 구조의 효율적인 설계 및 구현
  • MVVM 패턴을 사용한 깨끗하고 유지보수가 쉬운 코드 작성
  • 사용자 정의 컨트롤을 통한 재사용 가능한 UI 컴포넌트 개발
  • 다크 테마 구현을 포함한 현대적인 UI/UX 디자인 적용
  • Jamesnet.Wpf 라이브러리를 사용한 WPF 개발 생산성 향상

이 프로젝트는 단순한 예제를 넘어 실제 업무에서 마주할 수 있는 복잡한 요구사항과 문제 해결 과정을 포함하고 있어, WPF 개발자들의 기술 향상에 크게 도움이 될 것입니다.

주요 기능

  • Windows Explorer 기능의 고급 WPF 구현
  • MVVM 아키텍처 및 의존성 주입 적용
  • 사용자 정의 컨트롤을 사용한 모듈화된 UI 구성
  • 다크 테마 기반의 현대적인 UI/UX 디자인
  • Jamesnet.Wpf 라이브러리를 활용한 효율적인 개발
  • 복잡한 트리 구조 및 파일 시스템 탐색 구현
  • 고급 데이터 바인딩 및 명령 패턴 활용

기술 스택

  • .NET 8.0
  • WPF (Windows Presentation Foundation)
  • Jamesnet.Wpf
  • Prism
  • CommunityToolkit.Mvvm

시작하기

1. 저장소 복제:
git clone https://github.com/jamesnet214/wpf-explorer.git
2. Visual Studio 2022 이상에서 솔루션 열기
3. 필요한 NuGet 패키지 복원
4. 프로젝트 빌드 및 실행

"WPF INSIDE OUT" 책 소개

"WPF INSIDE OUT"은 WPF의 고급 기능과 실용적인 적용 방법을 상세히 다루는 종합 안내서입니다. WPF Explorer 프로젝트를 통해 이 책은 실제 애플리케이션 개발 과정을 단계별로 설명하며, 독자들에게 실용적인 WPF 개발 경험을 제공합니다.

책 구매 링크

WPF INSIDE OUT 구매하기

image

목차

  1. OVERVIEW
  • 1.1 학습의 철학과 방향성에 대해
  • 1.2 디자인 요소의 활용과 이해
  • 1.3 (CustomControl) 의 전문적인 활용
  • 1.4 GitHub 레포지터리
  • 1.5 외부 라이브러리와 종속성 관계
  • 1.6 .NET 버전 선택의 중요성
  • 1.7 프로젝트 구성
  • 1.8 (Project Overview) 섹션의 마무리
  1. Application
  • 2.1 프로젝트 네이밍
  • 2.2 새 프로젝트 만들기 (WpfExplorer)
  • 2.3 버전 선택 및 프로젝트 만들기
  • 2.4 기본 구성 파일 제거
  • 2.5 라이브러리와 종속성
  • 2.6 App 구현
  • 2.7 Starter 구현
  • 2.8 (Application) 섹션의 마무리
  1. DarkWindow
  • 3.1 프로젝트 네이밍
  • 3.2 프로젝트 만들기 (WpfExplorer.Support)
  • 3.3 Generic.xaml 관리
  • 3.4 AssemblyInfo.cs 파일과 CustomControl 관계
  • 3.5 사용자 지정 컨트롤 (CustomControl) 생성
  • 3.6 리소스 사전 (ResourceDictionary) 생성
  • 3.7 윈도우 버튼 구현
  • 3.8 CloseButton 구현
  • 3.9 MaximizeButton 구현
  • 3.10 MinimizeButton 구현
  • 3.11 Generic.xaml 리소스 파일 병합
  • 3.12 DarkWindow 구현
  • 3.13 DarkWindow 실행
  • 3.14 (Darkwindow) 섹션의 마무리
  1. Multiple ItemsControl
  • 4.1 TreeView 구현
  • 4.2 FolderTreeView 구현
  • 4.3 뷰에서 FolderTreeView 추가
  • 4.4 FolderTreeItem 구현
  • 4.5 ResourceDictionary의 병합
  • 4.6 실행: FolderTreeItem 테스트
  • 4.7 TreeViewItem 컨트롤 대체하기
  • 4.8 MVVM: 뷰모델 구현하기
  • 4.9 바인딩: TestTitle
  • 4.10 DataContext 할당하기
  • 4.11 실행: ViewModel 바인딩 테스트
  • 4.12 임시 속성 제거하기
  • 4.13 또 다른 바인딩 테스트 방법
  • 4.14 모델 클래스 생성
  • 4.15 DirectoryManager 클래스 생성 (Helper)
  • 4.16 Prism에 대한 간략한 소개
  • 4.17 싱글턴 객체 등록하기
  • 4.18 ViewModel 등록 관리
  • 4.19 의존성 주입
  • 4.20 (Multiple ItemsControl) 섹션의 마무리
  1. MainContent
  • 5.1 WpfExplorer.Main
  • 5.2 MainContent 등록
  • 5.3 객체 설계에 대한 주의 사항 (의존성 주입)
  • 5.4 ExplorerWindow 구조 변경
  • 5.5 MainContent 의존성 주입
  • 5.6 실행: MainContent 테스트
  • 5.7 FolderTreeView 관련 파일 프로젝트 이동
  • 5.8 윈도우 디렉터리 구조 만들기
  • 5.9 MainContent 뷰모델 구현
  • 5.10 MainContet 뷰 구현
  • 5.11 ItemsControl: 자식 요소의 객체 지정
  • 5.12 뷰모델에서 이벤트를 구현하는 방법
  • 5.13 TreeView 이벤트 바인딩
  • 5.14 SelectionCommand 연결
  • 5.15 실행: SelectionCommand 테스트
  • 5.16 좀 더 간소화된 ICommand 만들기
  • 5.17 TreeView 계층 구조
  • 5.18 TreeViewItem 자식 연결
  • 5.19 GetContainerForItem 재정의
  • 5.20 계층 표현: DepthConverter
  • 5.21 트리 하위 자식 보이기/숨기기 (IsExpanded)
  • 5.22 ExpandButton 구현 (ToggleButton)
  • 5.23 TreeView 최종 리소스 구현
  • 5.24 (MainContent) 세션의 마무리
  1. NavigatorService
  • 6.1 싱글턴 인스턴스 구현
  • 6.2 의존성 주입: NavigatorService 구현
  • 6.3 파일 목록 바인딩
  • 6.4 FileListBox 구현
  • 6.5 상세 파일 목록 만들기
  • 6.6 PolygonSelector 구현
  • 6.7 (NavigatorService) 섹션의 마무리
  1. LocationContent
  • 7.1 WpfExplorer.Location
  • 7.2 LocationContent 뷰 모듈화
  • 7.3 LocatorButton 구현
  • 7.4 LocatorTextBox 구현
  • 7.5 Generic.xaml 병합하기
  • 7.6 LocationContent 뷰 고도화
  • 7.7 LocatorTextBox 현재 위치 연결
  • 7.8 DarkWindow 고도화
  • 7.9 (LocationContent) 섹션의 마무리
  1. Advancement
  • 8.1 DarkScrollViewer 고도화
  • 8.2 FolderTreeView 초기 설정하기
  • 8.3 접근 불가능한 디렉터리의 표현
  • 8.4 (LocationContent) 섹션의 마무리

학습 자료

기여하기

이 프로젝트에 기여하고 싶으시다면 풀 리퀘스트를 보내주세요. 모든 기여를 환영합니다!

라이선스

이 프로젝트는 MIT 라이선스 하에 있습니다. 자세한 내용은 LICENSE 파일을 참조하세요.

연락처

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published