public override void OnInitialize()
        {
            base.OnInitialize();

            if (CanvasViewModel.IsFrameSizeZero)
            {
                MessageBox.Show("フレームのサイズが 0 です");
                Exits = true;
                return;
            }

            var fileName = GetFileName();

            if (string.IsNullOrEmpty(fileName))
            {
                return;
            }

            var serializer = new MazeDataSerializer(CanvasViewModel.MazeFrameData, CanvasViewModel.MazeContentData);

            serializer.Save(fileName);
        }
        public override void OnInitialize()
        {
            base.OnInitialize();

            var fileName = GetFileName();

            if (string.IsNullOrEmpty(fileName))
            {
                return;
            }

            var serializer = new MazeDataSerializer(CanvasViewModel.MazeFrameData, CanvasViewModel.MazeContentData);

            if (!serializer.Load(fileName))
            {
                MessageBox.Show($"{fileName} の読込みに失敗しました");
                return;
            }

            if (CanvasViewModel.MazeFrameData.SizeX < DataConstraints.MinFrameSize ||
                DataConstraints.MaxFrameSize < CanvasViewModel.MazeFrameData.SizeX)
            {
                CanvasViewModel.MazeFrameData.Clear();
                CanvasViewModel.MazeContentData.Clear();
                MessageBox.Show($"SizeX が {DataConstraints.MinFrameSize} ~ {DataConstraints.MaxFrameSize} の間のデータのみ読込み可能です");
                return;
            }

            if (CanvasViewModel.MazeFrameData.SizeX != CanvasViewModel.MazeFrameData.SizeY)
            {
                MessageBox.Show("SizeX は SizeY と一致するデータのみ読込み可能です");
                return;
            }

            UpdateRenderCanvas();
        }