Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / ModelPropertyCollectionImpl.cs / 1305376 / ModelPropertyCollectionImpl.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System.Collections.Generic; using System.Activities.Presentation.View; using System.ComponentModel; using System.IO; using System.Linq; // This provides a container for model properties of a modelItem. // This uses the TypeDescriptor.GetProperties() instead of using reflection // to get the properties of a model item. So any model instance implementing ICustomTypeProvider // is automatically taken care of. class ModelPropertyCollectionImpl : ModelPropertyCollection { ModelItem parent; bool createFakeModelProperties; public ModelPropertyCollectionImpl(ModelItem parent) { this.parent = parent; createFakeModelProperties = this.parent is FakeModelItemImpl; } public override IEnumeratorGetEnumerator() { foreach (PropertyDescriptor propertyDescriptor in GetPropertyDescriptors()) { yield return CreateProperty(parent, propertyDescriptor); } } protected override ModelProperty Find(System.Windows.DependencyProperty value, bool throwOnError ) { // We dont support dependency properties. if (throwOnError) { throw FxTrace.Exception.AsError(new NotSupportedException()); } else { return null; } } protected override ModelProperty Find(string name, bool throwOnError) { PropertyDescriptor propertyDescriptor = GetPropertyDescriptors()[name]; if (propertyDescriptor != null) { return CreateProperty(parent, propertyDescriptor); } return null; } ModelProperty CreateProperty(ModelItem parent, PropertyDescriptor propertyDescriptor) { bool isAttached = propertyDescriptor is AttachedPropertyDescriptor; return this.createFakeModelProperties ? (ModelProperty)(new FakeModelPropertyImpl((FakeModelItemImpl)parent, propertyDescriptor)) : (ModelProperty)(new ModelPropertyImpl(parent, propertyDescriptor,isAttached)); } PropertyDescriptorCollection GetPropertyDescriptors() { PropertyDescriptorCollection propertyDescriptors = PropertyDescriptorCollection.Empty; try { object instance = parent.GetCurrentValue(); if (instance != null) { if (!(instance is ICustomTypeDescriptor)) { Type instanceType = instance.GetType(); if (instanceType.IsValueType) { propertyDescriptors = TypeDescriptor.GetProvider(instanceType).GetTypeDescriptor(instanceType).GetProperties(); } else { propertyDescriptors = TypeDescriptor.GetProvider(instance).GetTypeDescriptor(instance).GetProperties(); } } else { propertyDescriptors = TypeDescriptor.GetProperties(instance); } } // Add browsable attached properties AttachedPropertiesService AttachedPropertiesService = this.parent.GetEditingContext().Services.GetService (); if (AttachedPropertiesService != null) { var browsableAttachedProperties = from attachedProperty in AttachedPropertiesService.GetAttachedProperties(this.parent.ItemType) where attachedProperty.IsBrowsable select new AttachedPropertyDescriptor(attachedProperty, this.parent); List mergedProperties = new List (); foreach (PropertyDescriptor propertyDescriptor in propertyDescriptors) { mergedProperties.Add(propertyDescriptor); } propertyDescriptors = new PropertyDescriptorCollection(mergedProperties.Concat(browsableAttachedProperties).ToArray(), true); } } catch (FileNotFoundException e) { EditingContext context = parent.GetEditingContext(); if (context.Items.GetValue () == null) { context.Items.SetValue(new ErrorItem { Message = e.Message, Details = e.ToString() }); } } return propertyDescriptors; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConversionHelper.cs
- FixedSOMFixedBlock.cs
- MSAANativeProvider.cs
- CultureInfoConverter.cs
- SerializationAttributes.cs
- PerformanceCounterCategory.cs
- OlePropertyStructs.cs
- PersonalizationProvider.cs
- RunInstallerAttribute.cs
- SHA512.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- Calendar.cs
- XmlBinaryReader.cs
- _BasicClient.cs
- Scheduling.cs
- FrameworkRichTextComposition.cs
- ObjectDataSourceSelectingEventArgs.cs
- BindingsCollection.cs
- StyleModeStack.cs
- httpapplicationstate.cs
- SchemeSettingElement.cs
- DesignerActionUI.cs
- MarkupObject.cs
- ServerValidateEventArgs.cs
- GroupBoxAutomationPeer.cs
- Pkcs9Attribute.cs
- GACIdentityPermission.cs
- MonikerSyntaxException.cs
- XmlSchemaExporter.cs
- SizeLimitedCache.cs
- Stroke2.cs
- ToolStripContentPanel.cs
- Domain.cs
- XmlWriterSettings.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- GroupDescription.cs
- WebPartRestoreVerb.cs
- OdbcDataAdapter.cs
- TimeManager.cs
- NameNode.cs
- TagPrefixCollection.cs
- ScriptingRoleServiceSection.cs
- ParentQuery.cs
- PointCollectionConverter.cs
- SafeNativeMethodsCLR.cs
- AudioStateChangedEventArgs.cs
- TreeNodeCollection.cs
- SqlNodeAnnotation.cs
- XsdBuilder.cs
- TimeSpanValidatorAttribute.cs
- sqlinternaltransaction.cs
- IsolatedStorageFileStream.cs
- InfoCardSymmetricCrypto.cs
- ResXResourceReader.cs
- WriteTimeStream.cs
- Vector3D.cs
- EmbeddedObject.cs
- SQLDecimalStorage.cs
- DataGridViewRowCancelEventArgs.cs
- UInt32.cs
- LineSegment.cs
- CompiledQueryCacheEntry.cs
- SecurityImpersonationBehavior.cs
- SpecialNameAttribute.cs
- _BufferOffsetSize.cs
- SQLRoleProvider.cs
- ConfigXmlText.cs
- CryptoStream.cs
- StateItem.cs
- ContentControl.cs
- TextEditorContextMenu.cs
- MouseOverProperty.cs
- MethodToken.cs
- DataGridViewCheckBoxCell.cs
- DataContractJsonSerializerOperationFormatter.cs
- ClientScriptManager.cs
- Calendar.cs
- HttpContext.cs
- BezierSegment.cs
- MobilePage.cs
- CreateParams.cs
- CharacterBufferReference.cs
- InheritanceAttribute.cs
- XslNumber.cs
- ToolStripDesignerAvailabilityAttribute.cs
- WorkflowService.cs
- ThicknessKeyFrameCollection.cs
- Polyline.cs
- AnnotationAuthorChangedEventArgs.cs
- State.cs
- XmlDataContract.cs
- UniqueIdentifierService.cs
- ObjectStateEntryDbDataRecord.cs
- ConnectionManagementSection.cs
- BezierSegment.cs
- WhitespaceReader.cs
- WebServicesSection.cs
- StrokeRenderer.cs
- HttpDebugHandler.cs
- BinaryMethodMessage.cs