Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Markup / ArrayExtension.cs / 1 / ArrayExtension.cs
/****************************************************************************\ * * File: ArrayExtension.cs * * Class for Xaml markup extension for Arrays * * Copyright (C) 2004 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.Windows; using System.Collections; using System.ComponentModel; namespace System.Windows.Markup { ////// Class for Xaml markup extension for Arrays. /// [ContentProperty("Items")] [MarkupExtensionReturnType(typeof(Array))] public class ArrayExtension : MarkupExtension, IAddChild { ////// Constructor that takes no parameters. This creates an empty array. /// public ArrayExtension() { } ////// Constructor that takes one parameter. This initializes the type of the array. /// public ArrayExtension( Type arrayType) { if (arrayType == null) { throw new ArgumentNullException("arrayType"); } _arrayType = arrayType; } ////// Constructor for writing /// /// The array to write public ArrayExtension(Array elements) { _arrayList.AddRange(elements); _arrayType = elements.GetType().GetElementType(); } ////// Called to Add an object as a new array item. This will append the object to the end /// of the array. /// /// /// Object to add to the end of the array. /// public void AddChild(Object value) { _arrayList.Add(value); } ////// Called to Add a text as a new array item. This will append the object to the end /// of the array. /// /// /// Text to Add to the end of the array /// public void AddText(string text) { AddChild(text); } ////// Get and set the type of array to be created when calling ProvideValue /// [ConstructorArgument("type")] public Type Type { get { return _arrayType; } set { _arrayType = value; } } ////// An IList accessor to the contents of the array /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IList Items { get { return _arrayList; } } ////// Return an array that is sized to the number of objects added to the ArrayExtension. /// /// Object that can provide services for the markup extension. ////// The Array containing all the objects added to this extension. /// public override object ProvideValue(IServiceProvider serviceProvider) { if (_arrayType == null) { throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionArrayType)); } object retArray = null; try { retArray = _arrayList.ToArray(_arrayType); } catch (System.InvalidCastException) { // If an element was added to the ArrayExtension that does not agree with the // ArrayType, then an InvalidCastException will occur. Generate a more // meaningful error for this case. throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionArrayBadType, _arrayType.Name)); } return retArray; } private ArrayList _arrayList = new ArrayList(); private Type _arrayType; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CatalogPart.cs
- EntityDescriptor.cs
- FlowLayoutSettings.cs
- ClientBuildManager.cs
- ImageSource.cs
- XmlMapping.cs
- WindowsSysHeader.cs
- ApplicationHost.cs
- SyndicationSerializer.cs
- PageHandlerFactory.cs
- OutputScope.cs
- panel.cs
- IISUnsafeMethods.cs
- ContainerUIElement3D.cs
- JapaneseCalendar.cs
- EventLogPermissionEntryCollection.cs
- RangeBase.cs
- TypeConverterHelper.cs
- FontInfo.cs
- ProcessInfo.cs
- GeneratedView.cs
- WorkflowInstanceExtensionManager.cs
- ListItemDetailViewAttribute.cs
- BehaviorEditorPart.cs
- OperationValidationEventArgs.cs
- HttpCookie.cs
- DurableInstanceManager.cs
- translator.cs
- SchemaDeclBase.cs
- ReflectPropertyDescriptor.cs
- PathSegmentCollection.cs
- BinaryParser.cs
- StorageRoot.cs
- RsaSecurityTokenAuthenticator.cs
- UIElementPropertyUndoUnit.cs
- ImmComposition.cs
- BaseDataList.cs
- CryptoApi.cs
- EdmToObjectNamespaceMap.cs
- ProtectedUri.cs
- HtmlInputControl.cs
- Size3D.cs
- ILGen.cs
- DataPagerFieldCollection.cs
- ArrayTypeMismatchException.cs
- ForeignKeyFactory.cs
- ConfigXmlReader.cs
- WebServiceErrorEvent.cs
- RowUpdatingEventArgs.cs
- AxParameterData.cs
- CompilerCollection.cs
- Page.cs
- StreamAsIStream.cs
- X509Utils.cs
- SiteMapPath.cs
- Helper.cs
- Setter.cs
- CaseStatementProjectedSlot.cs
- InputEventArgs.cs
- TypeConverter.cs
- HScrollBar.cs
- WebSysDefaultValueAttribute.cs
- SystemNetHelpers.cs
- RetrieveVirtualItemEventArgs.cs
- SqlBulkCopyColumnMapping.cs
- _OverlappedAsyncResult.cs
- MsmqIntegrationSecurity.cs
- SerTrace.cs
- WasEndpointConfigContainer.cs
- XmlSchemaSequence.cs
- TextEndOfSegment.cs
- Perspective.cs
- EntityModelSchemaGenerator.cs
- OperandQuery.cs
- OutOfProcStateClientManager.cs
- SourceInterpreter.cs
- ToolStripLabel.cs
- Ref.cs
- XpsStructure.cs
- NavigationService.cs
- SafeEventLogReadHandle.cs
- ProfileService.cs
- XmlNamespaceManager.cs
- InternalTypeHelper.cs
- FlatButtonAppearance.cs
- AbstractExpressions.cs
- ContainerActivationHelper.cs
- WeakReferenceList.cs
- InertiaTranslationBehavior.cs
- Int32Converter.cs
- Rules.cs
- StatusBarPanel.cs
- DeploymentSectionCache.cs
- ThreadInterruptedException.cs
- SqlAggregateChecker.cs
- Base64Encoder.cs
- EndpointFilterProvider.cs
- HybridDictionary.cs
- Model3D.cs
- CodeAttributeDeclarationCollection.cs