Я столкнулся с этой проблемой, и люди ответили на подобные вопросы, но по какой-то причине я не могу заставить ничего работать. Я, должно быть, что-то пропустил... Во всяком случае, когда я запускаю следующий код, обработчик TextBox_DragEnter никогда не вызывается. Однако, если я изменяю элемент TextBox в xaml на элемент TextBlock, он вызывается. Есть ли способ получить такое же поведение от элемента TextBox? Следующий код полностью изолирует проблему...
MainWindow.xaml:
<Window x:Class="Wpf1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Name="myGrid">
<TextBox AllowDrop="True" PreviewDragEnter="TextBox_DragEnter" PreviewDrop="TextBox_Drop" />
</Grid>
</Window>
MainWindow.xaml.cs:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Collections.ObjectModel;
namespace Wpf1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TextBox_DragEnter(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.Copy;
}
private void TextBox_Drop(object sender, DragEventArgs e)
{
}
}
}
Большое спасибо заранее!
Эндрю
EDIT:
Чтобы уточнить, я хотел бы разрешить отбрасывать пользовательский объект в текстовое поле. В обработчике Drop для текстового поля я хотел бы затем установить текст текстового поля в свойство объекта, а затем установить для свойства IsReadOnly TextBox значение false. У меня просто проблемы с перетаскиванием для TextBox...