Frage

Es gibt ein Listenfeld mit einigen Elementen in ihm. Auch gibt es ein Gitter mit 3x3 Matrix. Der Benutzer wird ein Element aus und fallen auf der einen der Zellen des Rasters werden ziehen.

Die meisten Proben fand ich sind über Drag-Drop aus einer listbox auf einen anderen listbox. Aber ich will in einer Zelle des Gitters fallen zu lassen. Wie kann ich das erreichen?

Bitte beraten. Vielen Dank PJ

Keine korrekte Lösung

Andere Tipps

pls, zu überprüfen, ob ein Beispiel unten würde für Sie arbeitet:

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

hoffe, das hilft, Grüße

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top