Ejemplo n.º 1
0
        private void cardView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // При нажатии левой кнопки мыши проверяем, можем ли мы переместить карты
            // от выбранной до нижней. Если можем - создаём из них DraggableCards и перемещаем их.
            var         view      = (CardView)sender;
            List <Card> draggable = Tableau.GetDraggableTopCards();

            for (int i = 0; i < draggable.Count; i++)
            {
                var dragCard = draggable[i];
                if (view.Card.Equals(dragCard))
                {
                    // Собираем карты в новый компонент.
                    var draggableCards = new DraggableCards();
                    draggableCards.Cards = draggable.GetRange(i, draggable.Count - i);
                    // Карты в таблице скрываем.
                    foreach (var cardView in _cardViews)
                    {
                        foreach (var card in draggableCards.Cards)
                        {
                            if (cardView.Card.Equals(card))
                            {
                                cardView.Visibility = Visibility.Hidden;
                            }
                        }
                    }
                    // Добавляем новый компонент на форму.
                    Canvas.SetTop(draggableCards, Canvas.GetTop(view));
                    Canvas.SetLeft(draggableCards, Canvas.GetLeft(view));
                    Panel.SetZIndex(draggableCards, 200);
                    RootView.Children.Add(draggableCards);
                    DragHelper.Drag(draggableCards, OnDragCompleted, e.GetPosition(null));
                    return;
                }
            }
        }