You recommended:
dataitem d = (dataitem)e.AddedItems[0];
But, this assumes the id is the FIRST element, right, or that I must know whatever element it is?
See my recent (new) WPF post on setting SelectedValuePath in XAML and using SelectedValue in code, to see if that is a good way?