Я использую telrik RadDragAndDrop Tool с ListBox.Я использую Silverlight с MVVM света.Мой вопрос заключается в том, как я должен использовать этот код во ViewModel.Это код файла.
public Construtor()
{
InitializeComponent();
RadDragAndDropManager.AddDragQueryHandler(this, OnDragQuery);
RadDragAndDropManager.AddDragInfoHandler(this, OnDragInfo);
RadDragAndDropManager.AddDropQueryHandler(this, OnDropQuery);
RadDragAndDropManager.AddDropInfoHandler(this, OnDropInfo);
}
private void OnDropInfo(object sender, DragDropEventArgs e)
{
ItemsControl box = e.Options.Destination as ItemsControl;
IList<Section> itemsSource = box.ItemsSource as IList<Section>;
Section section = e.Options.Payload as Section;
if (e.Options.Status == DragStatus.DropComplete)
{
if (!itemsSource.Contains(section))
{
itemsSource.Add(section);
}
}
}
void OnDropQuery(object sender, DragDropQueryEventArgs e)
{
ItemsControl box = e.Options.Destination as ItemsControl;
IList<Section> itemsSource = box.ItemsSource as IList<Section>;
Section section = e.Options.Payload as Section;
e.QueryResult = section != null && !itemsSource.Contains(section);
}
void OnDragInfo(object sender, DragDropEventArgs e)
{
ListBoxItem listBoxItem = e.Options.Source as ListBoxItem;
ListBox box = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox;
IList<Section> itemsSource = box.ItemsSource as IList<Section>;
Section section = e.Options.Payload as Section;
if (e.Options.Status == DragStatus.DragComplete)
{
if (section != null && itemsSource.Contains(section))
{
itemsSource.Remove(section);
}
}
}
protected virtual void OnDragQuery(object sender, DragDropQueryEventArgs e)
{
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.Content = box.SelectedItem;
e.Options.DragCue = cue;
}
e.QueryResult = true;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
SelectingQuestionsWindow window = new SelectingQuestionsWindow();
window.Show();
this.radExpander1.Visibility = System.Windows.Visibility.Visible;
}
<<strong>* XAML *> Это мой Xaml.
<ListBox x:Name="SectionListBoxMain" Height="165" Width="200" SelectedItem="{Binding SelectedSectionList}"
DisplayMemberPath="SectionName" ItemsSource="{Binding SectionList}" ItemContainerStyle="{StaticResource draggableItemStyle}">
<telerik:RadDragAndDropManager.AllowDrop>
true
</telerik:RadDragAndDropManager.AllowDrop>
</ListBox>
<TextBlock Width="20" />
<ListBox x:Name="SectionListBox" Height="167" Width="200" ItemsSource="{Binding SelectedSectionList}" telerik:RadDragAndDropManager.AllowDrop="True" DisplayMemberPath="SectionName" ItemContainerStyle="{StaticResource draggableItemStyle}">
</ListBox>
</StackPanel>