Inheritance: IMarkable, INotifyPropertyChanged, ISearchable, ITagStickable
        /// <summary>
        /// 新しいアイテムを追加する
        /// </summary>
        /// <returns>作成したアイテム</returns>
        public ItemModel AddItem(ItemModel addModel)
        {
            var manager = ModelsComposite.ItemModelManager;
            manager.AddModel(addModel);

            EventAggregator.OnModelDataChanged(this, new ModelValueChangedEventArgs());
            EventAggregator.OnAddIMarkable(this, new AddIMarkableModelEventArgs(addModel));

            return addModel;
        }
        public ItemSateliteViewModel(SateliteViewer viewer, ItemModel model)
        {
            _view = viewer;
            _parent = model;

            _view.Closed += _view_Closed;
            _parent.PropertyChanged += _parent_PropertyChanged;
            _view.OnJumpEvent += _view_OnJumpEvent;
            EventAggregator.DeleteIMarkableHandler += OnIMarkableDeleted;
        }
        public ItemModel GetNewModel()
        {
            var model = new ItemModel();
            model.Name = "名前のないアイテム";
            model.Id = GetUniqueId();
            model.ColorBrush = new SolidColorBrush(Color.FromArgb(255, 200, 0, 0));
            model.Symbol = "";
            model.Remarks = "";
            model.Kind = ItemKindEnum.Arm;

            return model;
        }
        public static SateliteViewer Generate(ItemModel model)
        {
            var viewer = new SateliteViewer(Application.Current.MainWindow);
            var viewModel = new ItemSateliteViewModel(viewer, model);

            viewer.LeftButtonLabel = "ステータス";
            viewer.TopButtonLabel = "自由記入欄";
            viewer.RightButtonLabel = "未使用";
            viewer.BottomButtonLabel = "未使用";

            viewer.RelatedModel = model;
            viewer.TopLeftGridElement = new StatusGrid() { DataContext = viewModel };
            viewer.TopRightGridElement = new RemarkGrid() { DataContext = viewModel };
            viewer.BottomRightGridElement = new NotUsedGrid() { DataContext = viewModel };
            viewer.BottomLeftGridElement = new NotUsedGrid() { DataContext = viewModel };

            return viewer;
        }
 /// <summary>
 /// コンストラクター
 /// </summary>
 /// <param name="org"></param>
 public ItemTransferItemViewModel(ItemModel org)
 {
     _source = org;
 }
 private void ChangeIsAppearedItemStoryModel(ItemModel item, bool isAppeared)
 {
     var itemStories = ModelsComposite.ItemStoryModelManager.FindModel(SelectingModel.Id);
     var itemStoryModel = itemStories.FindModel(item.Id);
     if (isAppeared)
     {
         if (itemStoryModel != null)
         {
             return;
         }
         var model = ModelsComposite.ItemStoryModelManager.GetNewModel(item.Id, SelectingModel.Id);
         itemStories.AddModel(model);
     }
     else
     {
         if (itemStoryModel == null)
         {
             return;
         }
         itemStories.RemoveModel(itemStoryModel);
     }
 }
        public void CopyWithoutId(ItemModel src)
        {
            this.ColorBrush = src.ColorBrush;
            this.Kind = src.Kind;
            this.Name = src.Name;
            this.Remarks = src.Remarks;
            this.Symbol = src.Symbol;
            this.Tags.Clear();

            foreach (var tagId in src.Tags)
            {
                this.Tags.Add(tagId);
            }
        }
        public void Select(ItemModel model)
        {
            int selectIndex = -1;
            if (model != null)
            {
                selectIndex = ItemModelCollection.IndexOf(model);
            }

            SelectingIndex = selectIndex;
        }
        public void RemoveModel(ItemModel model)
        {
            foreach (var mgr in _modelCollection)
            {
                var relationModel = mgr.FindModel(model.Id);
                if (relationModel == null)
                {
                    continue;
                }

                mgr.RemoveModel(relationModel);
            }
        }