blog sur le développement web, jquery,css3, Magento, Symphony, php et bien d'autres choses

Voici le code pour executer un drag drop vers une listbox en silverlight:

xaml:

<Canvas x:Name= »LayoutRoot » Background= »White »>
<ListBox x:Name= »lb » Width= »100″ Height= »200″ SelectionChanged= »lb_SelectionChanged »>
<ListBoxItem Width= »100″ Content= »a »/>
<ListBoxItem Width= »100″ Content= »b »/>
<ListBoxItem Width= »100″ Content= »c »/>
</ListBox>
</Canvas>

Code:

private Point previousPosition;
private bool isDragging;

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
foreach (ListBoxItem item in lb.Items)
{
item.RenderTransform = new TranslateTransform();
item.MouseLeftButtonUp += new MouseButtonEventHandler(item_MouseLeftButtonUp);
item.MouseMove += new MouseEventHandler(item_MouseMove);
}
}

private void lb_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListBoxItem item = (ListBoxItem)lb.SelectedItem;
item.CaptureMouse();
MatrixTransform mt = (MatrixTransform)item.TransformToVisual(LayoutRoot);
previousPosition = new Point(mt.Matrix.OffsetX, mt.Matrix.OffsetY);
isDragging = true;
lb.Items.Remove(item);
LayoutRoot.Children.Add(item);
}

void item_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
ListBoxItem item = (ListBoxItem)sender;
TranslateTransform transform = (TranslateTransform)item.RenderTransform;
Point currentPosition = e.GetPosition(LayoutRoot);
transform.X += currentPosition.X – previousPosition.Value.X;
transform.Y += currentPosition.Y – previousPosition.Value.Y;
previousPosition = currentPosition;
}
}

void item_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
ListBoxItem item = (ListBoxItem)sender;
item.ReleaseMouseCapture();
isDragging = false;
}

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s