コード例 #1
0
        /// <summary>
        /// Creates an exact copy of this card but for two differences.
        /// It has a newly generated Guid and can be assigned to a new owning set.
        /// This clone is effectively a whole new card with the same template
        /// and element values as the source it was cloned from. There are no links
        /// shared between this card the new clone.
        /// </summary>
        /// <param name="owningSet"></param>
        /// <returns></returns>
        public ICardViewItem CloneCard(ICardSetModel owningSet)
        {
            ICardViewItem card = new CardViewItem(this.Template);

            owningSet.RegisterCard(card);
            return(card);
        }
コード例 #2
0
        private void CardDropAction(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(ITreeViewItem).Name))
            {
                TreeViewItem  targetItem = sender as TreeViewItem;
                ITreeViewItem target     = targetItem.DataContext as ITreeViewItem;
                ITreeViewItem card       = e.Data.GetData(typeof(ITreeViewItem).Name) as ITreeViewItem;

                //did we drop onto a card or a deck
                ICardModel dropTarget = target as ICardModel;

                ICardSetViewItem setModel = TreeHelper.InferSet(targetItem);
                if (setModel != null && card != null)
                {
                    ICardSetModel set = setModel as ICardSetModel;
                    if (setModel == card.Parent)
                    {
                        //moving within the same set
                        //did we drop on a deck or a card
                        if (dropTarget != null)
                        {
                            if (dropTarget != card as ICardModel)
                            {
                                set.SwitchCardOrder(card as ICardModel, dropTarget, true);
                            }
                        }
                    }
                    else
                    {
                        //moving to a new set - first, move to the set
                        ICardSetModel owner = card.Parent as ICardSetModel;
                        owner.UnregisterCard(card as ICardModel);
                        owner = set as ICardSetModel;
                        owner.RegisterCard(card as ICardModel);

                        //did we drop on a deck or a card - move card within the set
                        if (dropTarget != null)
                        {
                            if (dropTarget != card as ICardModel)
                            {
                                set.SwitchCardOrder(card as ICardModel, dropTarget, true);
                            }
                        }
                    }

                    NotifyPropertyChanged("ObservableSets");
                }
                else
                {
                    MessageBox.Show("There was an error attempting to determine the card or deck during the drag operation.\n " +
                                    "Hell! I don't even know if it was a card or a deck!");
                    return;
                }
            }
        }