WPF / C #: отключить перетаскивание для текстовых полей? - PullRequest
5 голосов
/ 15 июля 2009

Кто-нибудь знает, как я могу отключить Drag & Drop для всех моих элементов TextBox? Я нашел что-то здесь , но мне понадобится запустить цикл для всех Элементов.

Ответы [ 4 ]

5 голосов
/ 09 июня 2010

Используйте следующее после InitializeComponent ()

DataObject.AddCopyingHandler(textboxName, (sender, e) => { if (e.IsDragDrop) e.CancelCommand(); });
2 голосов
/ 15 июля 2009

Вы можете легко обернуть то, что описывает эта статья, во вложенное свойство / поведение ...

т. TextBoxManager.AllowDrag = "False" (Для получения дополнительной информации ознакомьтесь с этими 2 статьями CodeProject - Образец перетаскивания и Образец эффекта стекла текст ссылки )

Или попробуйте новое поведение Blend SDK

UPDATE

  • Также прочитайте эту статью Билла Кемпфа о прикрепленном поведении
  • И, как указал kek444 в комментариях, вы просто создаете стиль по умолчанию для textbxo с этим набором прикрепленных свойств!
1 голос
/ 02 июня 2017

Лично я создал пользовательский элемент управления TextBox, который не позволяет перетаскивать, следующим образом:

/// <summary>
/// Represents a <see cref="TextBox"/> control that does not allow drag on its contents.
/// </summary>
public class NoDragTextBox:TextBox
{
    /// <summary>
    /// Initializes a new instance of the <see cref="NoDragTextBox"/> class.
    /// </summary>
    public NoDragTextBox()
    {
        DataObject.AddCopyingHandler(this, NoDragCopyingHandler);
    }

    private void NoDragCopyingHandler(object sender, DataObjectCopyingEventArgs e)
    {
        if (e.IsDragDrop)
        {
            e.CancelCommand();
        }
    }
}

Вместо использования TextBox используйте local: NoDragTextBox, где «local» - псевдоним расположения сборки NoDragTextBox. Та же логика выше также может быть расширена для предотвращения копирования / вставки в TextBox.

Для получения дополнительной информации проверьте ссылку на вышеуказанный код в http://jigneshon.blogspot.be/2013/10/c-wpf-snippet-disabling-dragging-from.html

1 голос
/ 03 января 2011

Создайте свой пользовательский элемент управления ex MyTextBox: TextBox и переопределите:

    protected override void OnDragEnter(DragEventArgs e)
    {
        e.Handled = true;
    }

    protected override void OnDrop(DragEventArgs e)
    {
        e.Handled = true;
    }


    protected override void OnDragOver(DragEventArgs e)
    {
        e.Handled = true;
    }
...