Drag from on listbox to another. Remove from first and Add to Second List

Feb 4, 2010 at 9:35 AM

Dear All

First off. The control is really awesome.kudoos to the team...

I have a scinerio in which i want to use it. 

I have two list boxes lets lstAvailableCountries and lstAddedCountries. lstAvailableCountries contains all the countries available and lstAddedCountries contains all the counntries added before.(Basically iam binding users with countries they are handling)

I want user to drag items from one list box and drop them to the second list box and vise versa.. at any time both lists will have different items.

Kindly, let me know if it is possible... 

Any code sample will be extremely helpful.

 

 

Feb 4, 2010 at 11:52 AM
Edited Feb 4, 2010 at 11:54 AM

I have made some progress in it .. what i am doing now  is that... when item is dragged from lstAvailableCountries to lstAddedCountries.the Countries. then i get the selected item and add it in the database . then load the datasources of both lists.. this then shows the right items in both lists... now the problem is .. i have to allo the user to drag it from lstAddedCountries to  lstAvailableCountries.

but when i click on lstAddedCountries to drag then it gives me an error..unable to cast object of system.windows.controls.contentpresenter to type system.windows.controls.panel.

Here is the code for both lists..

<ListBox x:Name="lstCitySrc" Width="200"  HorizontalAlignment="Left" Margin="0,0,50,0" 

                                        ItemsSource="{Binding Data, ElementName=ddsCitiesAvailable}">

                <ListBox.ItemTemplate>

                    <DataTemplate>

                        <dd:DropTarget Width="190" Height="20" DragSourceDropped="DropTarget_DragSourceDropped"

                                       Background="Red" >

                            <dd:DropTarget.Content>

                                <dd:DragSource ShowSwitchReplaceAnimation="True" ShowReturnToOriginalPositionAnimation="False" AllDropTargetsValid="True" AutoFitGhost="true">

                                    <Grid Width="190" Height="16" Background="{Binding Background}" HorizontalAlignment="Center">

                                        <TextBlock Text="{Binding Name}"

                                                     FontSize="12" VerticalAlignment="Center"

                                                     HorizontalAlignment="Center"></TextBlock>

                                    </Grid>

                                    <dd:DragSource.Ghost>

                                        <Grid Width="190" Height="16" Background="{Binding Background}" HorizontalAlignment="Center">

                                            <TextBlock Text="{Binding Name}" Opacity="0.5"

                                                       FontSize="12" VerticalAlignment="Center"

                                                     HorizontalAlignment="Center"></TextBlock>

                                        </Grid>

                                    </dd:DragSource.Ghost>

                                </dd:DragSource>

 

                            </dd:DropTarget.Content>

                        </dd:DropTarget>

                    </DataTemplate>

                </ListBox.ItemTemplate>

            </ListBox>

          <dd:DropTarget HorizontalAlignment="Center"

                                 DragSourceDropped="DropTarget_DragSourceDropped"  

                                 VerticalAlignment="Top" Width="200" Height="400">

                <dd:DropTarget.Content>

                    <dd:DragSource DraggingEnabled="False" VerticalAlignment="Top"  Height="400">

                        <ListBox x:Name="lstCityDest" ItemsSource="{Binding Data, ElementName=ddsCitiesAdded}" Width="200" HorizontalAlignment="right" Margin="0,0,0,0"  Height="400">

                                       <!-->-->

                            <ListBox.ItemTemplate>

                                <DataTemplate>

                                    <dd:DragSource ShowSwitchReplaceAnimation="False" AllDropTargetsValid="True" DraggingEnabled="True" AutoFitGhost="true">

                                        <Grid Width="190" Height="16" Background="{Binding Background}">

                                            <TextBlock Text="{Binding Name}"

                                                   FontSize="10" VerticalAlignment="Center"

                                                     HorizontalAlignment="Center"></TextBlock>

                                        </Grid>

                                        <dd:DragSource.Ghost>

                                            <Grid Width="190" Height="16" Background="{Binding Background}">

                                                <TextBlock Text="{Binding Name}" Opacity="0.5"

                                                       FontSize="10" VerticalAlignment="Center"

                                                     HorizontalAlignment="Center"></TextBlock>

                                            </Grid>

                                        </dd:DragSource.Ghost>

                                    </dd:DragSource>

                                </DataTemplate>

                            </ListBox.ItemTemplate>

                        </ListBox>

                    </dd:DragSource>

                </dd:DropTarget.Content>

            </dd:DropTarget>