1
0
Fork 0

refactor(P5b-3): 옵션 패널 품질·출력폴더를 OptionsViewModel에 선언적 TwoWay 바인딩

뷰 바인딩 마이그레이션 첫 슬라이스 — 명령형 컨트롤 읽기를 선언적 XAML 바인딩으로 전환.

- MainWindow.Options(OptionsViewModel) 노출. XAML: QualitySlider.Value ↔ Options.Quality,
  OutputPathTextBox.Text ↔ Options.CustomOutputDirectory (TwoWay, Window-relative).
- BuildOptions: Quality/CustomOutputDirectory 수동 동기 제거(바인딩이 담당). 충돌/AI/GPU만 코드비하인드.
- 검증: 빌드 0/0, 83 테스트 그린, publish 후 메인 창 크래시 없이 로드(언핸들드 로그 없음 = XAML 파싱/구성 정상).
  비치명적 실패 모드(바인딩 오류 시 기본값 degrade, 크래시 없음) — 슬라이더/출력폴더 실동작은 GUI 스모크 권장.
This commit is contained in:
Yun Chan 2026-06-02 09:59:44 +09:00
parent e95ec967e6
commit 6a4ac2d60c
2 changed files with 8 additions and 4 deletions

View file

@ -134,7 +134,8 @@
</Grid>
<Slider x:Name="QualitySlider" Margin="0,12,0,0"
Style="{StaticResource FsSliderStyle}"
Minimum="1" Maximum="100" Value="85"
Minimum="1" Maximum="100"
Value="{Binding Options.Quality, RelativeSource={RelativeSource AncestorType=Window}, Mode=TwoWay}"
ValueChanged="OnQualityChanged"/>
<Grid Margin="0,4,0,0">
<Grid.ColumnDefinitions>
@ -156,6 +157,7 @@
</Grid.ColumnDefinitions>
<TextBox x:Name="OutputPathTextBox"
Style="{StaticResource FsPathInputStyle}"
Text="{Binding Options.CustomOutputDirectory, RelativeSource={RelativeSource AncestorType=Window}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ToolTip="비워두면 원본 폴더 옆 서브폴더에 저장"/>
<Button Grid.Column="1" Margin="8,0,0,0" Width="36"
Content="…" Style="{StaticResource FsSecondaryButtonStyle}"