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
- SymmetricSecurityProtocolFactory.cs
- LessThanOrEqual.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- _NtlmClient.cs
- ByteStreamGeometryContext.cs
- TextDpi.cs
- EventDescriptorCollection.cs
- TemplateAction.cs
- ClusterRegistryConfigurationProvider.cs
- ElapsedEventArgs.cs
- TextServicesDisplayAttributePropertyRanges.cs
- OleStrCAMarshaler.cs
- Native.cs
- XamlTypeMapperSchemaContext.cs
- FunctionUpdateCommand.cs
- PeerObject.cs
- XPathPatternBuilder.cs
- TraceHandlerErrorFormatter.cs
- HelpEvent.cs
- StringSource.cs
- TextRunCache.cs
- Mappings.cs
- SQLInt32.cs
- SymbolEqualComparer.cs
- RuleSetDialog.cs
- EastAsianLunisolarCalendar.cs
- formatter.cs
- CLRBindingWorker.cs
- InternalsVisibleToAttribute.cs
- SevenBitStream.cs
- DataGridViewRowCollection.cs
- BufferedWebEventProvider.cs
- MetaType.cs
- SafeCertificateStore.cs
- RtfFormatStack.cs
- TrustManagerPromptUI.cs
- LocalizationComments.cs
- IsolatedStorageFile.cs
- WeakRefEnumerator.cs
- VoiceChangeEventArgs.cs
- SectionVisual.cs
- EncryptedReference.cs
- XmlSignatureManifest.cs
- OdbcErrorCollection.cs
- XmlSchemaFacet.cs
- QueueSurrogate.cs
- Table.cs
- Rights.cs
- BatchWriter.cs
- ToolStripRenderer.cs
- PersonalizationStateInfoCollection.cs
- MembershipPasswordException.cs
- InvalidFilterCriteriaException.cs
- StorageBasedPackageProperties.cs
- ApplicationFileCodeDomTreeGenerator.cs
- DelegatedStream.cs
- Storyboard.cs
- InterleavedZipPartStream.cs
- UpdateRecord.cs
- MethodCallTranslator.cs
- SqlComparer.cs
- XhtmlTextWriter.cs
- ListBox.cs
- QilFactory.cs
- Table.cs
- FormViewInsertedEventArgs.cs
- ReservationCollection.cs
- AccessDataSourceView.cs
- SamlAudienceRestrictionCondition.cs
- StylusPointDescription.cs
- SymbolMethod.cs
- Literal.cs
- RadialGradientBrush.cs
- VisualStyleTypesAndProperties.cs
- WebPartCatalogCloseVerb.cs
- DeploymentExceptionMapper.cs
- SQLInt32Storage.cs
- RootProfilePropertySettingsCollection.cs
- TransactionContext.cs
- HttpServerVarsCollection.cs
- SchemaTypeEmitter.cs
- WindowPatternIdentifiers.cs
- CellLabel.cs
- QuotedPrintableStream.cs
- RegexInterpreter.cs
- XhtmlBasicTextBoxAdapter.cs
- OverloadGroupAttribute.cs
- StrongNameIdentityPermission.cs
- XPathNodeList.cs
- TempFiles.cs
- TextDecorationCollection.cs
- PersistenceProviderElement.cs
- SQLDecimalStorage.cs
- WpfSharedBamlSchemaContext.cs
- WebPartsPersonalizationAuthorization.cs
- CachedPathData.cs
- SqlBulkCopy.cs
- CachingParameterInspector.cs
- DbSetClause.cs
- StackBuilderSink.cs