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
- InheritanceAttribute.cs
- SequentialActivityDesigner.cs
- TemplateLookupAction.cs
- ControlCachePolicy.cs
- NavigationPropertySingletonExpression.cs
- XmlBindingWorker.cs
- ParameterBuilder.cs
- AuthenticationModuleElement.cs
- assertwrapper.cs
- ContentTextAutomationPeer.cs
- SplashScreen.cs
- SurrogateEncoder.cs
- DBSqlParserTableCollection.cs
- OleDbMetaDataFactory.cs
- WebBrowserEvent.cs
- Window.cs
- EventDescriptor.cs
- ExpressionBindingCollection.cs
- PropertyEmitterBase.cs
- NameValueSectionHandler.cs
- IdnMapping.cs
- DesignerCalendarAdapter.cs
- XPathAxisIterator.cs
- XmlTextWriter.cs
- Point3DKeyFrameCollection.cs
- MarshalByRefObject.cs
- SettingsPropertyValue.cs
- SchemaCollectionCompiler.cs
- SQLByteStorage.cs
- FileFormatException.cs
- UdpChannelListener.cs
- WizardPanelChangingEventArgs.cs
- TrayIconDesigner.cs
- TextPattern.cs
- XmlDomTextWriter.cs
- ComboBox.cs
- ObjectListComponentEditor.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- ResponseStream.cs
- HashAlgorithm.cs
- DataGridViewSortCompareEventArgs.cs
- CellLabel.cs
- SpoolingTask.cs
- DigestComparer.cs
- FrameworkReadOnlyPropertyMetadata.cs
- DynamicControlParameter.cs
- StringUtil.cs
- EventArgs.cs
- CompareInfo.cs
- SynchronizedReadOnlyCollection.cs
- CounterCreationDataCollection.cs
- SurrogateSelector.cs
- IsolatedStorageFilePermission.cs
- WebPartManager.cs
- MessageHeaderException.cs
- UriExt.cs
- MethodImplAttribute.cs
- TextModifier.cs
- ScaleTransform.cs
- RegexWriter.cs
- RootBrowserWindowAutomationPeer.cs
- SystemBrushes.cs
- CompiledIdentityConstraint.cs
- XmlQueryStaticData.cs
- FormViewDeletedEventArgs.cs
- SystemUnicastIPAddressInformation.cs
- VisualStyleInformation.cs
- Int16AnimationUsingKeyFrames.cs
- KeyConverter.cs
- WorkBatch.cs
- compensatingcollection.cs
- ApplicationServiceHelper.cs
- MetricEntry.cs
- EarlyBoundInfo.cs
- LocalizableResourceBuilder.cs
- GZipDecoder.cs
- InvokeFunc.cs
- ConstructorBuilder.cs
- ContextMenuStrip.cs
- HyperLink.cs
- DataGridTextBoxColumn.cs
- PostBackOptions.cs
- SchemaElement.cs
- HwndHost.cs
- InertiaRotationBehavior.cs
- PropertyDescriptorComparer.cs
- DbCommandDefinition.cs
- InstanceView.cs
- DrawingGroupDrawingContext.cs
- DataPager.cs
- ListBoxItem.cs
- input.cs
- NullableConverter.cs
- WindowsTokenRoleProvider.cs
- InlinedAggregationOperatorEnumerator.cs
- MatrixTransform3D.cs
- StaticTextPointer.cs
- ColorContext.cs
- DockProviderWrapper.cs
- UMPAttributes.cs