Я мистифицирован некоторыми ответами, которые предлагают DI в качестве альтернативы использованию одиночных элементов; это несвязанные понятия. Можно использовать DI для введения или одиночного элемента или неодиночного элемента (например, на поток) экземпляры. По крайней мере, это верно при использовании Spring 2.x я не могу говорить за другие платформы DI.
, Таким образом, мой ответ на OP был бы (во всех кроме самого тривиального примера кода) к:
Этот подход дает Вам разъединенное хорошее (и поэтому гибкий и тестируемый) архитектура, где, использовать ли одиночный элемент, легко обратимая деталь реализации (обеспечил любые одиночные элементы, которые Вы используете, ориентированы на многопотоковое исполнение, конечно).
You can easily wrap what this article describes into a attached property/behaviours...
ie. TextBoxManager.AllowDrag="False" (For more information check out these 2 CodeProject articles - Drag and Drop Sample and Glass Effect Samplelink text)
Or try out the new Blend SDK's Behaviors
UPDATE
Используйте следующее после InitializeComponent()
DataObject.AddCopyingHandler(textboxName, (sender, e) => { if (e.IsDragDrop) e.CancelCommand(); });