public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { // obtain the 'bound' property via the Row string indexer string index = parameter as string; object propertyValue = null; Record record = value as Record; if (record != null) { propertyValue = record[index]; } else { FieldSetter propertyValueChange = value as FieldSetter; if (propertyValueChange != null) { propertyValue = propertyValueChange.Value; } } // convert if required if (_valueConverter != null) { propertyValue = _valueConverter.Convert(propertyValue, targetType, parameter, culture); } return(propertyValue); }