Domanda

C'è una casella di riepilogo con alcuni elementi in esso. Inoltre v'è una griglia a matrice 3x3. L'utente sarà trascinando un elemento e cadere su una delle celle della griglia.

La maggior parte dei campioni che ho trovato sono circa trascinando-passando da una casella di riepilogo a un'altra casella di riepilogo. Ma voglio far cadere in una cella della griglia. Come posso raggiungere questo obiettivo?

Si prega di avvisare. Grazie PJ

Nessuna soluzione corretta

Altri suggerimenti

pls, controllare se un esempio di seguito dovrebbe funzionare per voi:

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>

codice:

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();
    }
}

Spero che questo aiuti, saluti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top