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
- PathFigureCollectionConverter.cs
- XmlDataSource.cs
- DataGridViewIntLinkedList.cs
- GCHandleCookieTable.cs
- DataTableReaderListener.cs
- IPAddress.cs
- RectAnimationUsingKeyFrames.cs
- WmlControlAdapter.cs
- HtmlForm.cs
- ObjectDataProvider.cs
- userdatakeys.cs
- StructuredTypeInfo.cs
- ServiceReference.cs
- MappedMetaModel.cs
- QualificationDataItem.cs
- PropertyConverter.cs
- MsmqBindingMonitor.cs
- SecurityTokenProvider.cs
- WebException.cs
- RTLAwareMessageBox.cs
- ConfigurationPermission.cs
- BamlTreeUpdater.cs
- ProgressBarRenderer.cs
- TabItem.cs
- WindowClosedEventArgs.cs
- FtpWebRequest.cs
- XmlSchemaAnyAttribute.cs
- ClientScriptManagerWrapper.cs
- TemplateKeyConverter.cs
- StaticSiteMapProvider.cs
- CodeDomSerializer.cs
- Main.cs
- Geometry.cs
- Graphics.cs
- PipeStream.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- PointConverter.cs
- AnnotationDocumentPaginator.cs
- IisHelper.cs
- AnnotationMap.cs
- DataGridRow.cs
- Propagator.Evaluator.cs
- TableRowCollection.cs
- XmlIncludeAttribute.cs
- TranslateTransform3D.cs
- SupportingTokenBindingElement.cs
- TextEndOfParagraph.cs
- SeekStoryboard.cs
- ToolStripItemImageRenderEventArgs.cs
- dtdvalidator.cs
- ContextStaticAttribute.cs
- PersonalizablePropertyEntry.cs
- HttpAsyncResult.cs
- OAVariantLib.cs
- Icon.cs
- EventToken.cs
- WindowsFormsHost.cs
- SafeTimerHandle.cs
- Accessible.cs
- XamlRtfConverter.cs
- ObjectListField.cs
- SqlServer2KCompatibilityAnnotation.cs
- RtfNavigator.cs
- WsdlServiceChannelBuilder.cs
- SourceLineInfo.cs
- _HeaderInfo.cs
- DataBoundControlAdapter.cs
- DESCryptoServiceProvider.cs
- VisualBasicImportReference.cs
- ApplySecurityAndSendAsyncResult.cs
- Hash.cs
- CommandManager.cs
- SelfIssuedSamlTokenFactory.cs
- Executor.cs
- StringReader.cs
- AttributeSetAction.cs
- TableAutomationPeer.cs
- XmlBoundElement.cs
- EncoderParameter.cs
- FontSource.cs
- NativeMethods.cs
- CaseInsensitiveHashCodeProvider.cs
- EmbeddedObject.cs
- RegionData.cs
- ManagementObjectSearcher.cs
- Ray3DHitTestResult.cs
- Help.cs
- UpDownBase.cs
- mansign.cs
- DoubleLinkListEnumerator.cs
- GroupItemAutomationPeer.cs
- SqlTypeConverter.cs
- WebBaseEventKeyComparer.cs
- CompositionTarget.cs
- DataGridViewRowCancelEventArgs.cs
- BindingCollection.cs
- ImageSource.cs
- XmlRootAttribute.cs
- SettingsAttributes.cs
- PeerApplicationLaunchInfo.cs