[feat] WPF 회원관리 애플리케이션 구현
- .NET 8.0 WPF 프로젝트 생성 - MVVM 패턴 적용 (CommunityToolkit.Mvvm) - 의존성 주입 구현 (Microsoft.Extensions.DependencyInjection) - 로그인/회원관리/회원등록 화면 구현 - 테마 전환 기능 (Dark/Light) - 다국어 지원 (한국어/영어) - 세련된 로그인 UI 디자인 - CLAUDE.md 및 History.md 문서화 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
203
History.md
Normal file
203
History.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# 프로젝트 개발 히스토리
|
||||
|
||||
이 문서는 EduToy WPF 프로젝트의 개발 과정을 기록합니다.
|
||||
|
||||
---
|
||||
|
||||
## 1. 프로젝트 분석 및 CLAUDE.md 생성
|
||||
|
||||
### 요청
|
||||
- 코드베이스 분석 및 CLAUDE.md 파일 생성
|
||||
|
||||
### 작업 내용
|
||||
- 프로젝트 구조 탐색
|
||||
- "EduToy" - WPF 교육용 프로젝트로 확인
|
||||
- docs/sampleApp/WPFBeginner.exe (컴파일된 바이너리) 발견
|
||||
- CLAUDE.md 파일 영문으로 최초 작성
|
||||
|
||||
---
|
||||
|
||||
## 2. 한국어 전환 및 CLAUDE.md 번역
|
||||
|
||||
### 요청
|
||||
- 모든 대화를 한글로 진행
|
||||
- CLAUDE.md를 한글로 번역
|
||||
|
||||
### 작업 내용
|
||||
- CLAUDE.md 한국어로 번역 완료
|
||||
- 프로젝트 문서화 한국어 기준으로 변경
|
||||
|
||||
---
|
||||
|
||||
## 3. WPF 애플리케이션 구현
|
||||
|
||||
### 요청
|
||||
- PowerPoint 파일 (WPF 기초를 위한 토이프로젝트.pptx) 분석
|
||||
- sampleApp 참고하여 프로그램 구현
|
||||
|
||||
### 기술 스택
|
||||
- **.NET 8.0** Windows WPF
|
||||
- **CommunityToolkit.Mvvm 8.2.2** - MVVM 패턴
|
||||
- **Microsoft.Extensions.DependencyInjection 8.0.0** - DI
|
||||
|
||||
### 구현된 구조
|
||||
```
|
||||
src/WPFBeginner/
|
||||
├── Models/
|
||||
│ ├── Member.cs
|
||||
│ └── AppSettings.cs
|
||||
├── ViewModels/
|
||||
│ ├── LoginViewModel.cs
|
||||
│ ├── MainViewModel.cs
|
||||
│ └── RegistViewModel.cs
|
||||
├── Views/
|
||||
│ ├── LoginWindow.xaml / .cs
|
||||
│ ├── MainWindow.xaml / .cs
|
||||
│ └── RegistWindow.xaml / .cs
|
||||
├── Controls/
|
||||
│ └── InputPanel.xaml / .cs
|
||||
├── Services/
|
||||
│ ├── SettingsService.cs
|
||||
│ └── MemberService.cs
|
||||
├── Converters/
|
||||
│ └── BoolToVisibilityConverter.cs
|
||||
└── Resources/
|
||||
├── Themes/
|
||||
│ ├── DefaultTheme.xaml
|
||||
│ └── LightTheme.xaml
|
||||
└── Languages/
|
||||
├── ko-KR.xaml
|
||||
└── en-US.xaml
|
||||
```
|
||||
|
||||
### 주요 기능
|
||||
- 로그인 (appsettings.json 자격 증명)
|
||||
- 회원 관리 (DataGrid CRUD)
|
||||
- 테마 전환 (Dark/Light)
|
||||
- 다국어 지원 (한국어/영어)
|
||||
|
||||
---
|
||||
|
||||
## 4. 검색 영역 짤림 현상 수정
|
||||
|
||||
### 요청
|
||||
- 창 크기 줄였을 때 검색 영역이 짤리는 현상 수정
|
||||
- 엔터키로 검색 가능하도록 기능 개선
|
||||
|
||||
### 해결 방법
|
||||
- MinWidth="700" MinHeight="400" 설정
|
||||
- SearchTextBox_KeyDown 이벤트 핸들러 추가
|
||||
|
||||
### 수정 파일
|
||||
- `MainWindow.xaml` - MinWidth/MinHeight 추가
|
||||
- `MainWindow.xaml.cs` - KeyDown 이벤트 처리
|
||||
```csharp
|
||||
private void SearchTextBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.Key == Key.Enter && DataContext is MainViewModel viewModel)
|
||||
{
|
||||
viewModel.SearchCommand.Execute(null);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 로그인 화면 디자인 개선
|
||||
|
||||
### 요청
|
||||
- 가로 스크롤 디자인 개선
|
||||
- 로그인 화면을 세련되게 변경
|
||||
|
||||
### 적용된 디자인
|
||||
- 그라데이션 배경 (#1a1a2e → #16213e)
|
||||
- 둥근 모서리 (CornerRadius="12")
|
||||
- 그림자 효과 (DropShadowEffect)
|
||||
- 로고 아이콘 (원형 그라데이션)
|
||||
- 모던한 입력 필드 스타일
|
||||
- 그라데이션 로그인 버튼
|
||||
|
||||
### 수정 파일
|
||||
- `LoginWindow.xaml` - 전체 디자인 재구성
|
||||
|
||||
---
|
||||
|
||||
## 6. 로그인 화면 짤림 현상 수정
|
||||
|
||||
### 요청
|
||||
- 로그인 화면 위아래 짤림 현상 수정
|
||||
|
||||
### 해결 방법
|
||||
- 외부 Border에 Margin="15" 추가
|
||||
- 창 크기 500x420 → 540x440으로 확대
|
||||
|
||||
### 수정 파일
|
||||
- `LoginWindow.xaml`
|
||||
```xml
|
||||
<Window Height="540" Width="440">
|
||||
<Border Margin="15" CornerRadius="12">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect BlurRadius="15" ShadowDepth="0" Opacity="0.5"/>
|
||||
</Border.Effect>
|
||||
...
|
||||
</Border>
|
||||
</Window>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 테마 버튼 동작 수정
|
||||
|
||||
### 요청
|
||||
- 테마 버튼이 동작하지 않는 문제 수정
|
||||
- 로그인 화면 제외 이전 디자인 유지
|
||||
|
||||
### 문제 원인
|
||||
- MainWindow.xaml에 하드코딩된 색상 사용
|
||||
- DynamicResource 대신 직접 색상값 (#1a1a2e 등) 사용
|
||||
|
||||
### 해결 방법
|
||||
- MainWindow.xaml을 DynamicResource 사용하도록 복원
|
||||
- LoginWindow.xaml은 새 디자인 유지 (하드코딩)
|
||||
|
||||
### 수정 파일
|
||||
- `MainWindow.xaml`
|
||||
```xml
|
||||
<Window Background="{DynamicResource WindowBackgroundBrush}">
|
||||
<Border Background="{DynamicResource SecondaryBrush}">
|
||||
<DataGrid Style="{DynamicResource DefaultDataGridStyle}">
|
||||
```
|
||||
|
||||
### 테마 전환 구조
|
||||
1. **MainWindow.xaml** - 라디오 버튼 Command 바인딩
|
||||
2. **MainViewModel.cs** - SetDefaultThemeCommand, SetLightThemeCommand
|
||||
3. **SettingsService.cs** - ApplyTheme() 메서드로 ResourceDictionary 교체
|
||||
|
||||
---
|
||||
|
||||
## 최종 결과
|
||||
|
||||
### 완료된 기능
|
||||
- ✅ MVVM 패턴 기반 WPF 애플리케이션
|
||||
- ✅ 의존성 주입 (DI) 구현
|
||||
- ✅ 로그인/회원관리 기능
|
||||
- ✅ 테마 전환 (Dark/Light)
|
||||
- ✅ 다국어 지원 (한국어/영어)
|
||||
- ✅ 세련된 로그인 화면 디자인
|
||||
- ✅ 반응형 레이아웃 (MinWidth/MinHeight)
|
||||
- ✅ 엔터키 검색 기능
|
||||
|
||||
### 빌드 및 실행
|
||||
```bash
|
||||
cd src/WPFBeginner
|
||||
dotnet build
|
||||
dotnet run
|
||||
```
|
||||
|
||||
### 기본 로그인 정보
|
||||
- ID: admin
|
||||
- Password: 0000
|
||||
|
||||
---
|
||||
|
||||
*마지막 업데이트: 2025-12-29*
|
||||
Reference in New Issue
Block a user