Перетащите в WPF и C # - PullRequest
       2

Перетащите в WPF и C #

0 голосов
/ 28 октября 2011

У меня есть три панели, которые содержат три разных пользовательских элемента управления, а именно A, B и C. (примечание: эти пользовательские элементы управления создаются во время выполнения).перетаскивание из A в B и B в C образует правильную строку в моем приложении.

рассматривают, A1, A2, A3 и A4 как экземпляры управления A. и B1, B2, B3 и B4 как экземпляры управления B и C1 и C2 как экземпляры управления C.

считай, А1 перетаскивается на В1.который затем может быть сброшен на С1 или С2.я хочу ограничить поведение перетаскивания элемента управления B * (я имею в виду, если я перетащу на B1, я должен иметь возможность перетаскивать только B1, а не другие экземпляры) . * в настоящее времяЯ могу перетащить любой экземпляр независимо от выпадения.

Может ли кто-нибудь дать мне идею достичь того же?

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Вот созданный мной проект sample , использующий три различных элемента управления, и вы можете перетаскивать любой из них, а если вы хотите узнать больше, вы можете посетить WPFTutorial здесь В примере проекта вы можете установить цель перетаскивания там, где вы хотите разрешить удаление, и если нет, вы можете установить ее в false.

0 голосов
/ 28 октября 2011

Добавьте свойство к элементу управления типа B, которое указывает, что оно доступно для будущих операций перетаскивания.

private bool IsActiveDragSource { get; set; }

Добавьте обработчик к событию «Drop» элемента управления типа «B», который устанавливает для свойства «IsActiveDragSource» значение true

private void label_Drop(object sender, DragEventArgs e)
{
     // Handle the drop from control A
     this.IsActiveDragSource = true;
}

В вашем MouseMove (или любом другом выбранном событии Drag Source ) экземпляр DoDragDrop создается только в том случае, если для нового свойства установлено значение true.

    private void control_MouseMove(object sender, MouseEventArgs e)
    {
        if (this.IsActiveDragSource)
        {
            // Initialize the drag drop operation
            DragDrop.DoDragDrop(this, this, DragDropEffects.Copy);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...