У меня есть следующий XAML для главного окна:
<Window x:Class="ImageViewer.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="398" Width="434"> <Grid> <Canvas AllowDrop="True" /> </Grid> </Window>
Но когда я пытаюсь перетащить файл в окно, удаление не разрешено. Когда Canvas изменяется на ListBox, все работает отлично.
Как изменить код, чтобы разрешить перетаскивание на холст?
По умолчанию Canvas не имеет фона, поэтому тестирование попадания не обнаруживает, что курсор находится над элементом Canvas, а вместо этого всплывает до Grid или Window, которые не позволяют понижаться. Установите фон Transparent следующим образом, и он должен работать:
Canvas
Grid
Window
Transparent
<Window x:Class="ImageViewer.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="398" Width="434"> <Grid> <Canvas AllowDrop="True" Background="Transparent" /> </Grid> </Window>
Это работает как шарм! В коде вы хотели бы сделать что-то вроде:
Canvas myCanvas = new Canvas(); myCanvas.AllowDrop = true; myCanvas.Background = System.Windows.Media.Brushes.Transparent;