 			dataProvider.changed.remove(dataProviderChangedHandler);
 			
 			return this;
+		}
+		
+		public function getDataProvider(propertyName : String) : IDataProvider
+		{
+			var provider : IDataProvider = _propertyToProvider[propertyName] as IDataProvider;
+			
+			if (!provider)
+				throw new Error('The property \'' + propertyName + '\' has no data provider.');
+			
+			return provider;
 		}
 		
 		public function getProperty(propertyName : String) : Object

			_properties.length = numProperties;
			
			delete _values[propertyName];
//			delete _propertyChanged[propertyName];
			
			signalChange(propertyName, null);

		private var _bindings			: Dictionary		= new Dictionary(true);
		private var _values				: Object			= new Object();
		private var _properties			: Vector.<String>	= new <String>[];
		private var _propertyToProvider	: Object			= {};
		
		private var _propertyChanged	: Object			= new Object();
		
