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
- FontUnitConverter.cs
- SafeFileMappingHandle.cs
- VScrollProperties.cs
- ResXResourceSet.cs
- Literal.cs
- pingexception.cs
- OracleRowUpdatingEventArgs.cs
- Attributes.cs
- DiscreteKeyFrames.cs
- TimersDescriptionAttribute.cs
- RegexParser.cs
- DesignerSerializationOptionsAttribute.cs
- BamlRecordReader.cs
- ProfileParameter.cs
- CompositeCollection.cs
- PcmConverter.cs
- GrammarBuilderDictation.cs
- WindowsListView.cs
- WeakReferenceList.cs
- SingleConverter.cs
- RootBrowserWindowProxy.cs
- GroupedContextMenuStrip.cs
- QueryCacheKey.cs
- PropertyChangedEventManager.cs
- EmptyQuery.cs
- ResourceDictionary.cs
- UnsignedPublishLicense.cs
- NodeLabelEditEvent.cs
- WebUtil.cs
- PersistChildrenAttribute.cs
- DecoderBestFitFallback.cs
- RtType.cs
- Stack.cs
- PointAnimationUsingPath.cs
- ReturnEventArgs.cs
- UIElementParagraph.cs
- NonParentingControl.cs
- ArgIterator.cs
- TimeoutHelper.cs
- KeyValueConfigurationElement.cs
- XmlStringTable.cs
- ContractReference.cs
- ServiceModelConfigurationElementCollection.cs
- SpeechUI.cs
- InvalidChannelBindingException.cs
- AliasedSlot.cs
- WebBrowserDocumentCompletedEventHandler.cs
- XamlStream.cs
- SoapSchemaMember.cs
- ResumeStoryboard.cs
- CodeRemoveEventStatement.cs
- StyleSheetDesigner.cs
- HideDisabledControlAdapter.cs
- OdbcEnvironment.cs
- HttpRuntime.cs
- HtmlControlPersistable.cs
- SystemColors.cs
- SettingsProviderCollection.cs
- OpenTypeLayout.cs
- DoWorkEventArgs.cs
- ColorMatrix.cs
- PerspectiveCamera.cs
- RegexCode.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- SafeCloseHandleCritical.cs
- MatrixStack.cs
- Transaction.cs
- DataGridViewRowConverter.cs
- MiniParameterInfo.cs
- WmiEventSink.cs
- MsmqHostedTransportManager.cs
- TagPrefixInfo.cs
- Int16AnimationUsingKeyFrames.cs
- DataGridBoolColumn.cs
- XmlRawWriterWrapper.cs
- XmlBindingWorker.cs
- CodeConstructor.cs
- shaperfactory.cs
- ProfileManager.cs
- EnumBuilder.cs
- SerializerDescriptor.cs
- Cursors.cs
- ContentPlaceHolder.cs
- DataGridViewRowsRemovedEventArgs.cs
- TemplateBindingExtension.cs
- InternalRelationshipCollection.cs
- FixedDSBuilder.cs
- Timeline.cs
- SoapIgnoreAttribute.cs
- SqlResolver.cs
- EventProxy.cs
- ProgressBar.cs
- ZoneLinkButton.cs
- IQueryable.cs
- LogWriteRestartAreaAsyncResult.cs
- WebPartHelpVerb.cs
- StrokeRenderer.cs
- FigureParagraph.cs
- GlobalEventManager.cs
- InputLanguageSource.cs