Как показать элемент, который перетаскивается в WPF? - PullRequest
7 голосов
/ 02 февраля 2011

Я работал над приложением WPF, которое по сути является редактором WYSIWYG, и использует функцию перетаскивания.У меня работает функция перетаскивания, но я должен сделать ее более понятной и удобной для пользователя.Частично это будет связано с показом перетаскиваемого элемента.Какой самый простой способ сделать это?Предметы, которые я перетаскиваю, не являются чем-то особенным, но я даже не уверен, где искать, как это сделать.

1 Ответ

8 голосов
/ 02 февраля 2011

Вам нужно будет использовать DragDrop.GiveFeedback среди прочего;У Jaime есть отличное сообщение в блоге , в котором описаны различные сценарии, в которые входит описанный вами.

Тривиальный пример из сообщения в блоге Jaime по работе с курсором ...

        private void StartDragCustomCursor(MouseEventArgs e)
        {

            GiveFeedbackEventHandler handler = new GiveFeedbackEventHandler(DragSource_GiveFeedback);
            this.DragSource.GiveFeedback += handler; 
            IsDragging = true;
            DataObject data = new DataObject(System.Windows.DataFormats.Text.ToString(), "abcd");
            DragDropEffects de = DragDrop.DoDragDrop(this.DragSource, data, DragDropEffects.Move);
            this.DragSource.GiveFeedback -= handler; 
            IsDragging = false;
        }

        void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
        {
                try
                {
                    //This loads the cursor from a stream .. 
                    if (_allOpsCursor == null)
                    {
                        using (Stream cursorStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(
            "SimplestDragDrop.DDIcon.cur"))
                        {
                            _allOpsCursor = new Cursor(cursorStream);
                        } 
                    }
                    Mouse.SetCursor(_allOpsCursor);

                    e.UseDefaultCursors = false;
                    e.Handled = true;
                }
                finally { }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...