OK, I've solved that problem. I should not have used the converter for the time picker. It wants a timespan, not a string. So my code ended up looking like this:
Now the next issue is that when I am typing into the time picker, the displayed time is echoed in the grid row above. It looks like the CellEditTemplate is trying to update the CellTemplate as the typing occurs, but it is confused about which row it is in. See the attached screen shots. Before.jpg shows the second row with a start time of 10:00 AM. During.jpg shows the editing of the start time for the second row to 11:00 AM. Note that the row above is echoing the time I have entered. Now, when I tab to the next column (end time), both rows show the correct start times.
This is a complex application that gets its data from a SQL database via WCF RIA services, so it is difficult to post a complete reduction scenario, but please let me know any additional code, you would like to see. You may be wondering if the keydown event is doing this, but when I remove that event call, I still get the same result.
Also, the Timespan converter is not getting called during this update.
Thanks in advance for your help!