Files
EduToy/History.md
최준영 09768ad928 [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>
2025-12-29 10:03:49 +09:00

204 lines
4.9 KiB
Markdown

# 프로젝트 개발 히스토리
이 문서는 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*