Sono davvero lottando per ottenere un semplice drag and drop del campione lavora in Silverlight 4.Silverlight DragDrop.DoDragDrop()
Ecco quello che ho:
XAML
<UserControl x:Class="TestDragDrop.MainPage" Width="350" Height="200"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Background="White">
<Rectangle Margin="50,50,200,50" Fill="Orange" MouseLeftButtonDown="r1_MouseLeftButtonDown" />
<Rectangle Margin="200,50,50,50" Fill="Orange" AllowDrop="true" Drop="r2_Drop" />
</Grid>
</UserControl>
Code-Behind
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void r1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DragDrop.DoDragDrop((Rectangle)sender, "test data", DragDropEffects.All, DragDropKeyStates.LeftMouseButton);
}
private void r2_Drop(object sender, System.Windows.DragEventArgs e)
{
MessageBox.Show("Drop: " + e.Data.ToString());
}
}
L'evento DragDrop.DragDropCompleted
si attiva, tuttavia il parametro del mittente è sempre nullo e gli argomenti dell'evento non mi aiutano molto a trovare ulteriori informazioni sull'evento.
Ho anche provato a utilizzare un controllo personalizzato implementando IAcceptDrop senza fortuna.
Inoltre, quando avvio l'operazione di trascinamento, non ho feedback visivo sul fatto che qualcosa stia accadendo (nessun cambiamento nel cursore o altro). C'è qualcosa di sbagliato?
Tutti gli esempi che ho trovato utilizzano DragDropTargets. Il mio unico resort è quello di implementare un DragDropTarget per il particolare tipo di controlli che voglio usare?
Grazie per la risposta. Sto usando il metodo DragDrop.DoDragDrop() dal Toolkit. Precedentemente c'era una proprietà AllowDrop allegata dal Toolkit, ma questa era stata rimossa in SL4. Suppongo che la proprietà della struttura l'abbia sostituita? –
Sì, è possibile utilizzare la proprietà AllowDrop del framework. –
Grazie per aver spiegato cosa nessuno si è preso la briga di dire. –