/// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="workAreaManager">作業エリア管理用オブジェクト</param>
        public LayoutsManager(WorkAreaManager workAreaManager)
        {
            _WorkAreaManager = workAreaManager;

            // レイアウト一覧の上書きボタンをトリガーにレイアウト上書き保存を実行
            Layouts.ObserveElementObservableProperty(x => x.SaveButtonClickedCommand)
            .Select(x => x.Instance)
            .Subscribe(OverwritedSaveLayout)
            .AddTo(_Disposables);

            // レイアウト一覧の変更ボタンをトリガーにレイアウト名変更を実行
            Layouts.ObserveElementObservableProperty(x => x.EditButtonClickedCommand)
            .Select(x => x.Instance)
            .Subscribe(EditLayoutName)
            .AddTo(_Disposables);

            // レイアウト一覧の削除ボタンをトリガーにレイアウト削除を実行
            Layouts.ObserveElementObservableProperty(x => x.DeleteButtonClickedCommand)
            .Select(x => x.Instance)
            .Subscribe(DeleteLayout)
            .AddTo(_Disposables);

            // プリセットが選択、または解除された場合、DB に状態を保存する
            var changeChecked = Layouts.ObserveElementObservableProperty(x => x.IsChecked);

            changeChecked.Select(x => x.Instance)
            .Subscribe(x => SettingDatabase.Instance.ExecQuery($"UPDATE WorkAreaLayouts SET IsChecked = {(x.IsChecked.Value ? 1 : 0)} WHERE LayoutID = {x.LayoutID}"));

            // プリセットが選択された場合、他のチェックを全部外す
            changeChecked.Where(x => x.Value)
            .Select(x => x.Instance)
            .Subscribe(ExclusiveChecked);
        }
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="workAreaManager">作業エリア管理用</param>
 public ImportExporter(WorkAreaManager workAreaManager)
 {
     _WorkAreaManager = workAreaManager;
 }
 /// <summary>
 /// コンストラクタ
 /// </summary>
 public MainWindowModel(WorkAreaManager workAreaManager, WorkAreaFileIO workAreaFileIO)
 {
     _WorkAreaManager = workAreaManager;
     _WorkAreFileIO   = workAreaFileIO;
 }