Hi Trying to migrate my application to WPF, and I’m trying to hold as much to MVVM as possible. The following screen from my WinForm app was fairly easy to create, I’m not having such good luck wiht Xaml and WPF.

I like how this works, but my goal here is to either recreate this with WPF, or do this field mapping some way that I haven’t thought of yet, that still meets the basic requirement of mapping the input fields to my existing data structure.
Currently this is what I have in Xaml.
<UserControl x:Class="ImportJobDataView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:kne="clr-namespace:FatigueMVVM"
xmlns:local="clr-namespace:FatigueMVVM.DragDropListBox"
mc:Ignorable="d" d:DesignHeight="350" d:DesignWidth="447">
<Grid Height="350" Width="448">
<Grid.RowDefinitions >
<RowDefinition Height="300" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<ListView ItemsSource="{Binding ImportedJobDataColumns}" Margin="37,68,295,64" local:DragDropHelper.IsDragSource="true">
<ListView.View >
<GridView AllowsColumnReorder="True" >
<GridViewColumn Width="100" Header="Imported"/>
</GridView>
</ListView.View>
</ListView>
<ListView ItemsSource="{Binding KneJobDataColumns}" Margin="193,68,41,64" AllowDrop="True" local:DragDropHelper.IsDropTarget="true">
<ListView.View >
<GridView AllowsColumnReorder="True" >
<GridViewColumn Width="100" Header="Import From" DisplayMemberBinding="{Binding ImportField }" />
<GridViewColumn Width="100" Header="Map To" DisplayMemberBinding="{Binding KneField }" />
</GridView>
</ListView.View>
</ListView>
<Button Content="Open Csv" Height="23" HorizontalAlignment="Left" Margin="37,15,0,0" Name="Button1" VerticalAlignment="Top" Width="75" Command="{Binding OpenCsvCommand}" Grid.Row="1" />
<Button Content="Clean Data" Height="23" HorizontalAlignment="Left" Margin="118,15,0,0" Name="Button2" VerticalAlignment="Top" Width="auto" Grid.Row="1" />
<Button Content="View Imported Data" Height="23" HorizontalAlignment="Left" Margin="193,15,0,0" Name="Button3" VerticalAlignment="Top" Width="auto" Grid.Row="1" />
</Grid>
This is looking close to how I’d like it to look, but I can’t get drag and drop working. As you may have noticed, I’m using Bea Stollnitz solution to try and implement drag and drop. http://bea.stollnitz.com/blog/?p=53 Her solution is only made to work with ItemsControls, and as such, I’m afraid it is not working inside the GridView that I’m using to create the two columns. I have tried it with just Listboxes and the drag and drop functionality does work but I really need two columns to make this work.

Does anyone have either a suggestion on how to implement drag and drop in this scenario, or an alternative to the way that I’m currently trying to implement this.
Thanks much!
I ended up using a DataGrid instead of a ListView, mainly because it had more the look that I wanted. Because time was a little pressing, as I’d already wasted quite I bit on this problem, I decided to just implement the drag and drop functionality in the code-behind. My opinion on this was altered by reading this… http://forums.silverlight.net/t/225274.aspx/1
While the situation I’m working with is slightly different, for now its in the code-behind, some day perhaps I’ll move it into the View-Model just to learn something new… If someone disagrees, and would like to present a simple solution for moving this into the VM, be my guest:) Below is the UI image, showing what I’m trying to accomplish, and following that is the xaml and then the code-behind. I started with http://www.wpftutorial.net/DragAndDrop.html and worked from that basis. This functionality is very specific to exactly this one user control, so while I’m interested in the general concept of passing mouse events through the MVVM pattern, I’m not sure how useful it’d be to apply it to this one case.
Thoughts?