This question is locked. New answers and comments are not allowed.
HI,
I have done the code as specified in the Telerik Documentation... But when i try to Drag a Item from ListBox1 to ListBox2 i get an error stating 'Object Referance not set to an Instance of an object' in the OnDropQuery method.
Below is my code, I am getting Data From RIA Service.
In the Below code i am getting Null value in ItemSource specified in DropQuery method...
IList<Customer> itemsSource = box.ItemsSource as IList<Customer>;
And here is my Code Behind...
I have done the code as specified in the Telerik Documentation... But when i try to Drag a Item from ListBox1 to ListBox2 i get an error stating 'Object Referance not set to an Instance of an object' in the OnDropQuery method.
Below is my code, I am getting Data From RIA Service.
In the Below code i am getting Null value in ItemSource specified in DropQuery method...
IList<Customer> itemsSource = box.ItemsSource as IList<Customer>;
<UserControl xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="IATRICTestProject.Views.DragAndDrop" xmlns:telerikDragDrop="clr-namespace:Telerik.Windows.Controls.DragDrop;assembly=Telerik.Windows.Controls" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <UserControl.Resources> <DataTemplate x:Key="ApplicationDragTemplate"> <Image Source="{Binding IconPath}" Stretch="None" VerticalAlignment="Top" /> </DataTemplate> <Style TargetType="ListBoxItem" x:Key="draggableItemStyle"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="telerik:RadDragAndDropManager.AllowDrag" Value="True" /> </Style> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White"> <Grid.ColumnDefinitions> <ColumnDefinition Width="200" /> <ColumnDefinition Width="150" /> <ColumnDefinition Width="200" /> </Grid.ColumnDefinitions> <ListBox x:Name="allCustomersBox" telerikDragDrop:RadDragAndDropManager.AutoDrag="True" telerik:RadDragAndDropManager.AllowDrop="True" ItemContainerStyle="{StaticResource draggableItemStyle}"> <ListBox.ItemTemplate> <DataTemplate> <Grid Width="150"> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <TextBlock Text="{Binding Title}" Grid.Row="0" HorizontalAlignment="Center" /> <TextBlock Grid.Row="1" Text="{Binding FirstName}" FontWeight="Bold" HorizontalAlignment="Center" /> <TextBlock Text="{Binding EmailAddress}" Grid.Row="2" HorizontalAlignment="Center" /> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <!--My Applications--> <ListBox x:Name="myCustomersBox" telerikDragDrop:RadDragAndDropManager.AutoDrag="True" telerik:RadDragAndDropManager.AllowDrop="True" ItemContainerStyle="{StaticResource draggableItemStyle}" Grid.Column="2"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding EmailAddress}" HorizontalAlignment="Center" /> <TextBlock Text="{Binding FirstName}" HorizontalAlignment="Center" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> <ListBox.ItemsPanel> <ItemsPanelTemplate> <telerik:RadUniformGrid Columns="3" HorizontalAlignment="Left" VerticalAlignment="Top" /> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> </Grid></UserControl>And here is my Code Behind...
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Telerik.Windows.Controls.DragDrop;using System.Collections;using IATRICTestProject.Web;using System.Collections.ObjectModel;using System.ServiceModel.DomainServices.Client;namespace IATRICTestProject.Views{ public partial class DragAndDrop : UserControl { private ObservableCollection<Customer> allCustomers; private ObservableCollection<Customer> myCustomers; AdventureWorksDomainContext _context; public DragAndDrop() { _context = new AdventureWorksDomainContext(); InitializeComponent(); Loaded += new RoutedEventHandler(DragAndDrop_Loaded); RadDragAndDropManager.AddDragQueryHandler(this, OnDragQuery); RadDragAndDropManager.AddDragInfoHandler(this, OnDragInfo); RadDragAndDropManager.AddDropQueryHandler(this, OnDropQuery); RadDragAndDropManager.AddDropInfoHandler(this, OnDropInfo); } void DragAndDrop_Loaded(object sender, RoutedEventArgs e) { this._context.Load(_context.GetCustomerQuery(), LoadCustomersCompleted, null); } private void LoadCustomersCompleted(LoadOperation<Customer> lo) { try { allCustomers = new ObservableCollection<Customer>(_context.Customers); allCustomersBox.ItemsSource = allCustomers; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString() + "LoadCustomersCompleted"); } } #region DragDrop Events // OnDragQuery event handler private void OnDragQuery(object sender, DragDropQueryEventArgs e) { try { ListBoxItem listBoxItem = e.Options.Source as ListBoxItem; ListBox box = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox; if (e.Options.Status == DragStatus.DragQuery && box != null) { e.Options.Payload = box.SelectedItem; ContentControl cue = new ContentControl(); cue.ContentTemplate = this.Resources["ApplicationDragTemplate"] as DataTemplate; cue.Content = box.SelectedItem; e.Options.DragCue = cue; e.Options.ArrowCue = RadDragAndDropManager.GenerateArrowCue(); } e.QueryResult = true; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString() + "OnDragQuery"); } } // OnDropQuery event handler private void OnDropQuery(object sender, DragDropQueryEventArgs e) { try { ItemsControl box = e.Options.Destination as ItemsControl; IList<Customer> itemsSource = box.ItemsSource as IList<Customer>; Customer payload = e.Options.Payload as Customer; e.QueryResult = payload != null && !itemsSource.Contains(payload); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString() + "OnDropQuery"); } } // OnDropInfo event handler private void OnDropInfo(object sender, DragDropEventArgs e) { try { ItemsControl box = e.Options.Destination as ItemsControl; IList<Customer> itemsSource = box.ItemsSource as IList<Customer>; Customer payload = e.Options.Payload as Customer; if (e.Options.Status == DragStatus.DropComplete) if (!itemsSource.Contains(payload)) itemsSource.Add(payload); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString() + "OnDropInfo"); } } // OnDragInfo event handler private void OnDragInfo(object sender, DragDropEventArgs e) { try { ListBoxItem listBoxItem = e.Options.Source as ListBoxItem; ListBox box = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox; IList<Customer> itemsSource = box.ItemsSource as IList<Customer>; Customer payload = e.Options.Payload as Customer; if (e.Options.Status == DragStatus.DragComplete) { if (payload != null && itemsSource.Contains(payload)) { itemsSource.Remove(payload); } } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString() + "OnDragInfo"); } } #endregion } }