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

4.9 KiB

프로젝트 개발 히스토리

이 문서는 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 이벤트 처리
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
<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
<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)
  • 엔터키 검색 기능

빌드 및 실행

cd src/WPFBeginner
dotnet build
dotnet run

기본 로그인 정보

  • ID: admin
  • Password: 0000

마지막 업데이트: 2025-12-29