Workaround: SchedulerBindingDataSource schedulerBindingSource = new SchedulerBindingDataSource(); schedulerBindingSource.EventProvider.ResourceMapperFactory = new MyResourceMapperFactory(schedulerBindingSource); class MyResourceMapperFactory : Telerik.WinControls.UI.Scheduler.ResourceMapperFactory { public MyResourceMapperFactory(SchedulerBindingDataSource owner) : base(owner) { } public override Telerik.WinControls.UI.Scheduler.ResourceIdMapper GetResourceMapper(object dataSourceItem, PropertyDescriptor resourceIdDescriptor) { if (resourceIdDescriptor == null) { resourceIdDescriptor = GetResourceIdDescriptor(dataSourceItem); } return base.GetResourceMapper(dataSourceItem, resourceIdDescriptor); } private PropertyDescriptor GetResourceIdDescriptor(object resourceIdList) { string resourceIdPropertyName = ((AppointmentMappingInfo)this.OwnerDataSource.EventProvider.Mapping).ResourceId; if (string.IsNullOrEmpty(resourceIdPropertyName)) return null; System.Collections.IList list = resourceIdList as System.Collections.IList; Type listType = resourceIdList.GetType(); if (list == null && listType.IsGenericType && listType.GetGenericArguments().Length == 1) { Type[] genericArguments = listType.GetGenericArguments(); PropertyDescriptorCollection resourceProperties = TypeDescriptor.GetProperties(genericArguments[0]); return resourceProperties.Find(resourceIdPropertyName, true); } else { PropertyDescriptorCollection resourceProperties = ListBindingHelper.GetListItemProperties(resourceIdList); return resourceProperties.Find(resourceIdPropertyName, true); } } }