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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PermissionSetTriple.cs
- TableLayoutPanelCellPosition.cs
- CodeLinePragma.cs
- StyleTypedPropertyAttribute.cs
- SrgsSemanticInterpretationTag.cs
- TraceLevelHelper.cs
- NegotiateStream.cs
- XmlElementList.cs
- DataSourceCache.cs
- XmlnsPrefixAttribute.cs
- PathFigure.cs
- MailMessageEventArgs.cs
- XmlSchemaSimpleTypeUnion.cs
- Activation.cs
- TemplatedEditableDesignerRegion.cs
- DataSvcMapFile.cs
- FontFamilyConverter.cs
- DateTimePicker.cs
- XPathSelectionIterator.cs
- BatchServiceHost.cs
- TextEffectResolver.cs
- FilteredAttributeCollection.cs
- SqlGatherProducedAliases.cs
- Validator.cs
- DataMemberAttribute.cs
- GeometryCollection.cs
- StrokeNodeEnumerator.cs
- AuthStoreRoleProvider.cs
- RuntimeConfigLKG.cs
- FontFamilyConverter.cs
- SerializerDescriptor.cs
- XmlSchemas.cs
- PackageFilter.cs
- PeerNearMe.cs
- PresentationAppDomainManager.cs
- Symbol.cs
- DockingAttribute.cs
- LoadedEvent.cs
- ColumnTypeConverter.cs
- Win32Exception.cs
- RegistrySecurity.cs
- ChannelProtectionRequirements.cs
- SecurityPermission.cs
- VBIdentifierNameEditor.cs
- DBBindings.cs
- CodeDirectoryCompiler.cs
- SplitterDesigner.cs
- CurrencyWrapper.cs
- TreeNodeSelectionProcessor.cs
- StandardTransformFactory.cs
- StringDictionaryCodeDomSerializer.cs
- Timer.cs
- HttpException.cs
- CompilerGlobalScopeAttribute.cs
- XmlCustomFormatter.cs
- WebPartEditorApplyVerb.cs
- TextBoxView.cs
- ToolZone.cs
- FormViewInsertedEventArgs.cs
- SourceFileBuildProvider.cs
- SimpleTypeResolver.cs
- XmlReflectionMember.cs
- DataTableMappingCollection.cs
- Tile.cs
- DesignerCategoryAttribute.cs
- SoundPlayer.cs
- PointAnimationBase.cs
- RadioButtonPopupAdapter.cs
- Publisher.cs
- AliasGenerator.cs
- ListViewGroupConverter.cs
- RuleRef.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- TypedAsyncResult.cs
- ZipIOCentralDirectoryBlock.cs
- CachedTypeface.cs
- itemelement.cs
- XmlSchemaSet.cs
- ArgIterator.cs
- Fault.cs
- NonSerializedAttribute.cs
- ActivityCodeDomSerializationManager.cs
- ConfigurationElement.cs
- WebSysDescriptionAttribute.cs
- NativeMethodsCLR.cs
- TreeNodeBinding.cs
- DataSourceControlBuilder.cs
- InputLangChangeRequestEvent.cs
- WindowsProgressbar.cs
- TextEffectCollection.cs
- CmsInterop.cs
- NamespaceList.cs
- FormsAuthenticationConfiguration.cs
- Deflater.cs
- Util.cs
- XmlTextReaderImpl.cs
- CodeVariableDeclarationStatement.cs
- CssClassPropertyAttribute.cs
- TraceContextEventArgs.cs
- XhtmlBasicCommandAdapter.cs