Drag And Drop d'un élément d'une DataGrid vers un canvas (rectangle)
Bonjour,
Bon c'est ma première expérience avec les DragAndDrop. voila ce que j'ai, une datagrid de Person et un canvas. J'ai effectué une petite recherche sur internet et j'ai trouvé le Toolkit de silverlight 4 qui m'offre un toolkit:DataGridDragDropTarget avec des elements Draggable :)
voila mon fichier .xaml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="DragAndDrop.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
xmlns:toolKit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Toolkit">
<Grid x:Name="LayoutRoot" Background="White" Loaded="LayoutRoot_Loaded">
<toolkit:DataGridDragDropTarget AllowDrop="True"
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<sdk:DataGrid x:Name="dataGrid1" IsReadOnly="True" AutoGenerateColumns="False" Height="123" Width="273">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="Person ID" Binding="{Binding PERSON_ID}"/>
<sdk:DataGridTextColumn Header="First Name" Binding="{Binding FIRST_NAME}"/>
<sdk:DataGridTextColumn Header="Middle Name" Binding="{Binding MIDDLE_NAME}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</toolkit:DataGridDragDropTarget>
<toolkit:PanelDragDropTarget Height="61" HorizontalAlignment="Left" Margin="111,22,0,0" Name="panelDragDropTarget1" VerticalAlignment="Top" Width="229" Background="Blue">
<toolkit:WrapPanel AllowDrop="True" Drop="WrapPanel_Drop">
<Canvas AllowDrop="True" Background="Aqua" Height="61" Width="141" Drop="Canvas_Drop"/>
</toolkit:WrapPanel>
</toolkit:PanelDragDropTarget>
</Grid>
</UserControl> |
bon j'essayer de mettre le WrapPanel et le Canvas en AllowDrop="True"
et voila mon code pour le handler pour le test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
Person p = new Person();
p.PERSON_ID = 1;
p.FIRST_NAME = "rami";
p.MIDDLE_NAME = "rami";
Person p1 = new Person();
p1.PERSON_ID = 2;
p1.FIRST_NAME = "Ben Khalfallah";
p1.MIDDLE_NAME = "rami";
Person p2 = new Person();
p2.PERSON_ID = 3;
p2.FIRST_NAME = "Said";
p2.MIDDLE_NAME = "Said";
List<Person> liste = new List<Person>();
liste.Add(p);
liste.Add(p1);
liste.Add(p2);
dataGrid1.ItemsSource = liste;
}
private void WrapPanel_Drop(object sender, DragEventArgs e)
{
MessageBox.Show("Dropped into WrapPanel");
}
private void Canvas_Drop(object sender, DragEventArgs e)
{
MessageBox.Show("Dropped into Canvas");
}
}
public class Person
{
public int PERSON_ID { get; set; }
public string FIRST_NAME{ get; set; }
public string MIDDLE_NAME{ get; set; }
} |
Quand je teste, aucun MessageBox ne s'affiche après le DragAndDrop d'une ligne du DataGrid :(.
Quelqu'un en a une idée ? 8O
Merci d'avance.