💾 HasUnsavedChanges が切り替わる瞬間
1. プロパティを編集 Slider/ComboBox
WindowWidth/Theme を書き換えた瞬間に RelayCommand.RaiseCanExecuteChanged() が発火します。
2. 終了ダイアログ OnClosing
HasUnsavedChanges が true のまま閉じると MessageBox.Show() が三択で割り込む構造です。
3. 保存確定 SettingsService.Save
AppData パスの JSON を書き戻し、最終更新と保存先の表示を刷新します。
ComboBox を Light→Dark に変えた瞬間、ThemeManager.ApplyThemeInline が呼ばれ Save ボタンが点灯します。