public override void SetControlValue(Control control, object source, string propertyName)
{
var listControl = control as ListControl;
if (listControl == null) return;
var sourceProperty = source.GetType().GetProperty(propertyName);
if (sourceProperty == null) return;
var value = sourceProperty.GetValue(source, null);
var collection = GetCollection(source, propertyName, value);
listControl.DataSource = collection;
listControl.SelectedIndex = collection.IndexOf(value);
}