------ VB.NET ------ Public Class PersonForeignKeyConverter Inherits ForeignKeyConverter Public Overrides Function GetKeyFromValue( value As Object, configuration As ForeignKeyConfiguration ) As Object Dim bindingList As PersonBindingList = TryCast( configuration.ItemsSource, PersonBindingList ) If Not bindingList Is Nothing Then Dim person As Person = TryCast( value, Person ) If Not person Is Nothing Then Return person.PersonID End If End If Return -1 End Function Public Overrides Function GetValueFromKey( key As Object, configuration As ForeignKeyConfiguration ) As Object Dim bindingList As PersonBindingList = TryCast( configuration.ItemsSource, PersonBindingList ) If Not bindingList Is Nothing Then Try Dim personID As Integer = CInt( key ) Dim person As Person For Each person In bindingList If person.PersonID = personID Then Return person End If Next person Catch e As Exception ' key can be nothing End Try Return Nothing End Function End Class ------ C# ------ public class PersonForeignKeyConverter : ForeignKeyConverter { public override object GetKeyFromValue( object value, ForeignKeyConfiguration configuration ) { PersonBindingList bindingList = configuration.ItemsSource as PersonBindingList; if( bindingList != null ) { Person person = value as Person; if( person != null ) { return person.PersonID; } } return -1; } public override object GetValueFromKey( object key, ForeignKeyConfiguration configuration ) { PersonBindingList bindingList = configuration.ItemsSource as PersonBindingList; if( bindingList != null ) { try { int personID = ( int )key; foreach( Person person in bindingList ) { if( person.PersonID == personID ) { return person; } } } catch( Exception ) { // key can be null } } return null; } }