Glisser-déposer entre les éléments de ListBox et les cellules de grille dans WPF?
-
23-09-2019 - |
Question
Il y a une liste avec quelques éléments qu'il contient. Il y a également une grille avec une matrice 3x3. L'utilisateur sera glisser un élément et en déposant sur une des cellules de la grille.
La plupart des échantillons que j'ai trouvé sont sur le glisser-déposer d'un à l'autre ListBox ListBox. Mais je veux déposer dans une cellule de la grille. Comment puis-je y parvenir?
S'il vous plaît conseiller. Merci PJ
Pas de solution correcte
Autres conseils
pls, vérifier si un exemple ci-dessous fonctionnerait pour vous:
XAML:
<Grid>
<ListBox Height="100" HorizontalAlignment="Left" Margin="56,65,0,0"
Name="listBox1" VerticalAlignment="Top" Width="120"
PreviewMouseLeftButtonDown="listBox1_PreviewMouseLeftButtonDown">
<ListBoxItem Content="one" />
<ListBoxItem Content="two" />
<ListBoxItem Content="three" />
</ListBox>
<Grid Height="100" HorizontalAlignment="Left" Margin="238,65,0,0" Name="grid1"
VerticalAlignment="Top" Width="200" ShowGridLines="True" TextBlock.Drop="grid1_Drop">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" AllowDrop="True"></TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" AllowDrop="True"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" AllowDrop="True"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" AllowDrop="True"></TextBlock>
</Grid>
</Grid>
code:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void listBox1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
object item = listBox1.SelectedItem;
if (item != null)
DragDrop.DoDragDrop(listBox1, item, DragDropEffects.Move);
}
private void grid1_Drop(object sender, RoutedEventArgs e)
{
TextBlock textBlock = e.Source as TextBlock;
Console.WriteLine("drop item into grid column:{0} row:{1}",
Grid.GetColumn(textBlock), Grid.GetRow(textBlock));
DataObject item = (((DragEventArgs)e).Data) as DataObject;
ListBoxItem listItem = item.GetData(typeof(ListBoxItem)) as ListBoxItem;
textBlock.Text = listItem.Content.ToString();
}
}
espère que cette aide, ce qui a trait
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow