/// <summary>
 /// リージョンのViewを削除する
 /// </summary>
 private void RemoveImagePanelViewRegions()
 {
     foreach (var name in RegionNames.GetImageContentRegionNames(_contentCount))
     {
         _regionManager.Regions[name].RemoveAll();
     }
 }
        /// <summary>
        /// 指定Countに対応する画像RegionのViewsを取得(2画面なら 2_0 → 2_1 を返す)
        /// </summary>
        /// <returns></returns>
        //private IEnumerable<T> GetImageContentViews<T>() where T : FrameworkElement =>
        //    RegionNames.GetImageContentRegionNames(_contentCount)
        //        .Select(name => _regionManager.Regions[name].Views.Cast<T>().FirstOrDefault());

        /// <summary>
        /// Viewを作成してリージョンに登録する
        /// </summary>
        private void RegisterImagePanelViewRegions(int contentIndexOffset = 0)
        {
            var regionNames = RegionNames.GetImageContentRegionNames(_contentCount);

            foreach (var(name, index) in regionNames.Indexed())
            {
                _regionManager.RegisterViewWithRegion(name, () =>
                {
                    var contentIndex = (index + contentIndexOffset) % _contentCount;
                    var parameters   = ImageViewParameterFactory.GetImageViewParameters(contentIndex, _contentCount);
                    return(_container.Resolve <ImagePanel>(parameters));
                });
            }
        }
        /// <summary>
        /// 画像(ViewModel)を右回りで入れ替え
        /// </summary>
        /// <param name="rightShiftRequest">右シフト回数</param>
        private void RightShiftViewModels(int rightShiftRequest = 1)
        {
            if (_contentCount <= 1)
            {
                return;                      // 回転する必要なし
            }
            if (rightShiftRequest == 0)
            {
                return;
            }

#if true
            // Vの作り直し
            RemoveImagePanelViewRegions();

            // 画像コンテンツ番号のシフト量(これまでの累積回転数を考慮)
            var indexShift = (-(_rightShiftCounter + rightShiftRequest)) % _contentCount;
            if (indexShift < 0)
            {
                indexShift += _contentCount;
            }
            RegisterImagePanelViewRegions(indexShift);
#elif false
            // Vの入れ替え
            var views = GetImageContentViews <FrameworkElement>().ToList().RightShift(rightShift);
            foreach (var(name, index) in RegionNames.GetImageContentRegionNames(_contentCount).Indexed())
            {
                _regionManager.Regions[name].RemoveAll();
                _regionManager.RegisterViewWithRegion(name, () => views[index]);
            }
#else
            // VMの入れ替え
            var views   = GetImageContentViews <FrameworkElement>().ToArray();
            var vmodels = views.Select(x => x.DataContext).ToArray().AsSpan()
                          .RightShift(rightShift);

            for (int i = 0; i < views.Length; i++)
            {
                views[i].DataContext = vmodels[i];
            }
#endif
            // ViewModel内の回転数を加算
            _rightShiftCounter += rightShiftRequest;
        }