두 개의 ListBox (Silverlight 3 응용 프로그램에서)는 각각 ListBoxDragDropTarget으로 래핑됩니다. 이제 일부 사용자 지정 개체 (Person)로 SourceBox를 채 웁니다. 그런 다음 대상 DragDtopTarget의 DragOver 이벤트를 연결합니다. 이 모든 작업을 잘하고 난 & 요소를 첫 번째 목록에서 두 번째로 끌어 놓을 수 있습니다.Silverlight 응용 프로그램에서 끌기 요소를 얻는 방법
이제 내 문제 : 드래그를 허용하거나 끌기 위해 드래그중인 요소를 어떻게 얻을 수 있습니까? (FragEventArgs에서 Person을 얻을 수 없습니다).
이 내 XAML입니다 :
<Grid x:Name="LayoutRoot" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<controlsToolkit:ListBoxDragDropTarget
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
x:Name="DragSource">
<ListBox x:Name="lbSource" DisplayMemberPath="Name" />
</controlsToolkit:ListBoxDragDropTarget>
<controlsToolkit:ListBoxDragDropTarget
Grid.Column="1"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
x:Name="DragDest"
msWindows:DragDrop.AllowDrop="true">
<ListBox x:Name="lbDest" DisplayMemberPath="Name" />
</controlsToolkit:ListBoxDragDropTarget>
이 내로 dragOver - 처리기의 코드입니다 :
Private Sub DragDest_DragOver(ByVal sender As Object, _
ByVal e As Microsoft.Windows.DragEventArgs) _
Handles DragDest.DragOver
Dim Pers = e.Data.GetData(GetType(Person))
End Sub
는이 문제를 해결하는 방법을 어떤 힌트를 주셔서 감사합니다.
크리스토프
편집 :
이 도움말 :-) 내 짧은 버전입니다 : 당신은 먼저 SelectionCollection를 검색 한 다음 ItemDragEventArgs
에 데이터 오브젝트를 변환 할 필요가
Private Sub DragDest_DragOver(ByVal sender As Object, _
ByVal e As Microsoft.Windows.DragEventArgs) _
Handles DragDest.DragOver
Dim Args As ItemDragEventArgs = e.Data.GetData(e.Data.GetFormats()(0))
Dim Sel As SelectionCollection = Args.Data
Dim Persons = (From Pe In Sel Select DirectCast(Pe.Item, Person)).ToList
End Sub