protected override object GetValueCore(object component) { if (m_propertyDescriptor != null) { object value; try { value = m_propertyDescriptor.GetValue(component); } catch (DataException) { // We have to return null if the datarow is deleted from the DataTable. // When the System.Data.DataRow have RowState == detached, it can be because it has been deleted // or it being inserted, nothing special found to differentiate that 2 state. So doing a try catch. value = null; } CultureInfo converterCulture = this.ConverterCulture; if (converterCulture == null) { converterCulture = CultureInfo.InvariantCulture; } return(this.GetBindingConverter(component).Convert( value, this.DataType, this.ConverterParameter, converterCulture)); } if (m_bindingPathValueExtractorForRead == null) { CultureInfo converterCulture = this.ConverterCulture; if (converterCulture == null) { converterCulture = CultureInfo.InvariantCulture; } PropertyPath propertyPath = null; if (!string.IsNullOrEmpty(this.ValuePath)) { propertyPath = new PropertyPath(this.ValuePath, BindingPathValueExtractor.EmptyObjectArray); } m_bindingPathValueExtractorForRead = new BindingPathValueExtractor( this.ValueXPath, propertyPath, false, this.DataType, this.GetBindingConverter(component), this.ConverterParameter, converterCulture); } return(m_bindingPathValueExtractorForRead.GetValueFromItem(component)); }
protected override void SetValueCore(object component, object value) { if (m_propertyDescriptor != null) { CultureInfo converterCulture = this.ConverterCulture; if (converterCulture == null) { converterCulture = CultureInfo.InvariantCulture; } object convertedValue = this.GetBindingConverter(component).ConvertBack( value, m_propertyDescriptor.PropertyType, this.ConverterParameter, converterCulture); m_propertyDescriptor.SetValue(component, convertedValue); } else { if (m_bindingPathValueExtractorForWrite == null) { CultureInfo converterCulture = this.ConverterCulture; if (converterCulture == null) { converterCulture = CultureInfo.InvariantCulture; } PropertyPath propertyPath = null; if (!string.IsNullOrEmpty(this.ValuePath)) { propertyPath = new PropertyPath(this.ValuePath, BindingPathValueExtractor.EmptyObjectArray); } m_bindingPathValueExtractorForWrite = new BindingPathValueExtractor( this.ValueXPath, propertyPath, true, this.DataType, this.GetBindingConverter(component), this.ConverterParameter, converterCulture); } m_bindingPathValueExtractorForWrite.SetValueToItem(component, value); } base.SetValueCore(component, value); }
protected override void SetValueCore( object component, object value ) { if( m_propertyDescriptor != null ) { CultureInfo converterCulture = this.ConverterCulture; if( converterCulture == null ) converterCulture = CultureInfo.InvariantCulture; object convertedValue = this.GetBindingConverter( component ).ConvertBack( value, m_propertyDescriptor.PropertyType, this.ConverterParameter, converterCulture ); m_propertyDescriptor.SetValue( component, convertedValue ); } else { if( m_bindingPathValueExtractorForWrite == null ) { CultureInfo converterCulture = this.ConverterCulture; if( converterCulture == null ) converterCulture = CultureInfo.InvariantCulture; PropertyPath propertyPath = null; if( !string.IsNullOrEmpty( this.ValuePath ) ) propertyPath = new PropertyPath( this.ValuePath, BindingPathValueExtractor.EmptyObjectArray ); m_bindingPathValueExtractorForWrite = new BindingPathValueExtractor( this.ValueXPath, propertyPath, true, this.DataType, this.GetBindingConverter( component ), this.ConverterParameter, converterCulture ); } m_bindingPathValueExtractorForWrite.SetValueToItem( component, value ); } base.SetValueCore( component, value ); }
protected override object GetValueCore( object component ) { if( m_propertyDescriptor != null ) { object value; try { value = m_propertyDescriptor.GetValue( component ); } catch( DataException ) { // We have to return null if the datarow is deleted from the DataTable. // When the System.Data.DataRow have RowState == detached, it can be because it has been deleted // or it being inserted, nothing special found to differentiate that 2 state. So doing a try catch. value = null; } CultureInfo converterCulture = this.ConverterCulture; if( converterCulture == null ) converterCulture = CultureInfo.InvariantCulture; return this.GetBindingConverter( component ).Convert( value, this.DataType, this.ConverterParameter, converterCulture ); } if( m_bindingPathValueExtractorForRead == null ) { CultureInfo converterCulture = this.ConverterCulture; if( converterCulture == null ) converterCulture = CultureInfo.InvariantCulture; PropertyPath propertyPath = null; if( !string.IsNullOrEmpty( this.ValuePath ) ) propertyPath = new PropertyPath( this.ValuePath, BindingPathValueExtractor.EmptyObjectArray ); m_bindingPathValueExtractorForRead = new BindingPathValueExtractor( this.ValueXPath, propertyPath, false, this.DataType, this.GetBindingConverter( component ), this.ConverterParameter, converterCulture ); } return m_bindingPathValueExtractorForRead.GetValueFromItem( component ); }