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
- StateChangeEvent.cs
- NotImplementedException.cs
- RenderingBiasValidation.cs
- StringUtil.cs
- FullTextLine.cs
- DiagnosticTrace.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ToolboxItemAttribute.cs
- GeneralTransform2DTo3D.cs
- ImageBrush.cs
- PartBasedPackageProperties.cs
- PropertyChange.cs
- UIPermission.cs
- DataGridViewSelectedCellCollection.cs
- AxisAngleRotation3D.cs
- ConsumerConnectionPointCollection.cs
- StringReader.cs
- CodeMemberMethod.cs
- SqlReferenceCollection.cs
- TableLayoutSettingsTypeConverter.cs
- TypeUsageBuilder.cs
- MDIClient.cs
- FtpWebRequest.cs
- SqlInternalConnection.cs
- OpCellTreeNode.cs
- TraceUtils.cs
- LinqDataSourceContextEventArgs.cs
- Transform3DGroup.cs
- WsiProfilesElement.cs
- HostingPreferredMapPath.cs
- XmlIlTypeHelper.cs
- DebugHandleTracker.cs
- ExtenderProviderService.cs
- HandlerBase.cs
- RightsManagementEncryptedStream.cs
- InputDevice.cs
- DbDataReader.cs
- AttachInfo.cs
- CompareValidator.cs
- ConfigXmlSignificantWhitespace.cs
- FontFamily.cs
- DeferredTextReference.cs
- EasingKeyFrames.cs
- SqlClientFactory.cs
- TypeListConverter.cs
- IgnoreSectionHandler.cs
- FrameworkTextComposition.cs
- ServiceOperationParameter.cs
- Subtree.cs
- HandlerWithFactory.cs
- EnterpriseServicesHelper.cs
- _AutoWebProxyScriptEngine.cs
- BrowserCapabilitiesCompiler.cs
- WebHttpBehavior.cs
- SqlUDTStorage.cs
- SqlCacheDependencyDatabase.cs
- HuffCodec.cs
- WebPartHeaderCloseVerb.cs
- WithStatement.cs
- Stack.cs
- StylusButton.cs
- BuilderInfo.cs
- SqlUtil.cs
- SafeNativeMethods.cs
- ConfigurationSettings.cs
- IndexOutOfRangeException.cs
- HtmlEncodedRawTextWriter.cs
- FileNotFoundException.cs
- DiagnosticsConfiguration.cs
- NamespaceCollection.cs
- UIElementParaClient.cs
- BindingList.cs
- TextDpi.cs
- TableColumn.cs
- FrameworkReadOnlyPropertyMetadata.cs
- DataRelation.cs
- ButtonStandardAdapter.cs
- DesignerSerializationOptionsAttribute.cs
- SQLMembershipProvider.cs
- WindowCollection.cs
- ServiceContractListItem.cs
- XmlWhitespace.cs
- TokenFactoryCredential.cs
- DesignerListAdapter.cs
- DirectoryObjectSecurity.cs
- XamlParser.cs
- StatusBarAutomationPeer.cs
- DesignerActionVerbItem.cs
- CancellationTokenRegistration.cs
- SqlDataSourceCache.cs
- FormViewInsertedEventArgs.cs
- NegotiateStream.cs
- StrokeCollection2.cs
- SchemaMerger.cs
- DrawingVisualDrawingContext.cs
- XmlSchemaComplexContent.cs
- XmlChildEnumerator.cs
- ModifierKeysValueSerializer.cs
- Command.cs
- MexHttpsBindingCollectionElement.cs