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
- DynamicResourceExtensionConverter.cs
- QueryValue.cs
- RichTextBox.cs
- MemoryFailPoint.cs
- MasterPageCodeDomTreeGenerator.cs
- TimerElapsedEvenArgs.cs
- DataSvcMapFile.cs
- ListViewInsertionMark.cs
- SQLString.cs
- CollectionViewProxy.cs
- _AutoWebProxyScriptWrapper.cs
- GridViewRowPresenter.cs
- RadioButtonBaseAdapter.cs
- AddInAttribute.cs
- ScrollEventArgs.cs
- DataRowView.cs
- Vector.cs
- StateRuntime.cs
- RedistVersionInfo.cs
- ToolStripItemEventArgs.cs
- ListViewItemMouseHoverEvent.cs
- PathFigureCollectionConverter.cs
- ReflectPropertyDescriptor.cs
- InlinedAggregationOperatorEnumerator.cs
- Control.cs
- PermissionSetTriple.cs
- JournalNavigationScope.cs
- HtmlContainerControl.cs
- ToolZone.cs
- DrawingCollection.cs
- LineServicesCallbacks.cs
- DesignerRegion.cs
- DataContractJsonSerializer.cs
- XmlSchemaDocumentation.cs
- FixedSOMLineCollection.cs
- LocatorPartList.cs
- MenuCommandService.cs
- PeerSecurityHelpers.cs
- FileSystemEnumerable.cs
- RadioButton.cs
- TabletDeviceInfo.cs
- coordinatorfactory.cs
- ControlPaint.cs
- HebrewCalendar.cs
- SecurityRuntime.cs
- ContractsBCL.cs
- XhtmlBasicValidatorAdapter.cs
- OleDbStruct.cs
- SqlExpressionNullability.cs
- GeneratedCodeAttribute.cs
- NavigationProgressEventArgs.cs
- AttributedMetaModel.cs
- VirtualPathUtility.cs
- WeakReferenceList.cs
- PkcsMisc.cs
- SymmetricAlgorithm.cs
- FieldTemplateFactory.cs
- ObjectListShowCommandsEventArgs.cs
- CodeStatement.cs
- RangeValidator.cs
- RotateTransform.cs
- ProxyWebPartManager.cs
- SoapIncludeAttribute.cs
- RunClient.cs
- SelfSignedCertificate.cs
- ContentPathSegment.cs
- GridViewColumnCollection.cs
- DataTableExtensions.cs
- NonSerializedAttribute.cs
- ListViewPagedDataSource.cs
- DataGridViewLinkCell.cs
- WebEventCodes.cs
- StorageTypeMapping.cs
- DurableInstancingOptions.cs
- ProcessHostFactoryHelper.cs
- ToolboxCategoryItems.cs
- WindowsListViewSubItem.cs
- ResourceDescriptionAttribute.cs
- Statements.cs
- StoreAnnotationsMap.cs
- NameValuePermission.cs
- ProtectedConfigurationProviderCollection.cs
- GC.cs
- OdbcDataAdapter.cs
- MethodCallTranslator.cs
- SimpleBitVector32.cs
- WrappedDispatcherException.cs
- ContentPlaceHolder.cs
- ExpressionBindingCollection.cs
- FlowNode.cs
- MouseGestureValueSerializer.cs
- Annotation.cs
- DirectoryObjectSecurity.cs
- CodeChecksumPragma.cs
- EpmContentDeSerializer.cs
- URLBuilder.cs
- ProfileManager.cs
- ContentValidator.cs
- ItemCollection.cs
- TrackingMemoryStreamFactory.cs