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
- WindowsListBox.cs
- DirectionalLight.cs
- ISessionStateStore.cs
- File.cs
- XPathNavigator.cs
- Help.cs
- bindurihelper.cs
- ReadOnlyCollectionBase.cs
- FormsAuthentication.cs
- ServiceNameCollection.cs
- ProcessModuleCollection.cs
- DataControlFieldCell.cs
- Logging.cs
- ArrayConverter.cs
- ErrorFormatterPage.cs
- SqlErrorCollection.cs
- ConfigurationManagerHelperFactory.cs
- HttpValueCollection.cs
- DataFormats.cs
- DefinitionUpdate.cs
- Effect.cs
- StrokeNodeEnumerator.cs
- TableRowGroupCollection.cs
- EventDrivenDesigner.cs
- TemplateParser.cs
- TransactionScope.cs
- OAVariantLib.cs
- HtmlButton.cs
- ValidationContext.cs
- CheckBoxField.cs
- ScrollableControl.cs
- FamilyTypefaceCollection.cs
- remotingproxy.cs
- Int64.cs
- DataSourceSerializationException.cs
- DataListCommandEventArgs.cs
- SecurityResources.cs
- ToolStripDropDownClosingEventArgs.cs
- Utils.cs
- DataGridViewTopRowAccessibleObject.cs
- AsyncCompletedEventArgs.cs
- dbenumerator.cs
- RawTextInputReport.cs
- QueuePropertyVariants.cs
- XmlSerializerNamespaces.cs
- _NegotiateClient.cs
- SqlGatherConsumedAliases.cs
- DbConnectionStringCommon.cs
- ObjectView.cs
- SerialReceived.cs
- Configuration.cs
- UnicodeEncoding.cs
- InitializerFacet.cs
- BuildProviderInstallComponent.cs
- FrameworkElementFactory.cs
- SoapSchemaMember.cs
- LineServicesCallbacks.cs
- PkcsUtils.cs
- QueryOperationResponseOfT.cs
- WebPartUserCapability.cs
- ScaleTransform3D.cs
- TableParagraph.cs
- TiffBitmapDecoder.cs
- PixelFormatConverter.cs
- AttributedMetaModel.cs
- GlyphCollection.cs
- BinaryNode.cs
- EntityDataSourceContainerNameConverter.cs
- CalendarDataBindingHandler.cs
- SerializerDescriptor.cs
- CompressStream.cs
- CatalogZone.cs
- QueryCursorEventArgs.cs
- ButtonBase.cs
- Table.cs
- SafeCryptContextHandle.cs
- ComboBoxRenderer.cs
- GridItemProviderWrapper.cs
- XmlSchemaGroupRef.cs
- XD.cs
- Ipv6Element.cs
- Transform3D.cs
- TextRangeProviderWrapper.cs
- InternalException.cs
- Semaphore.cs
- ParallelTimeline.cs
- ConstrainedDataObject.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- XmlUTF8TextWriter.cs
- CommandLibraryHelper.cs
- FontStyleConverter.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- SecuritySessionServerSettings.cs
- SystemException.cs
- WindowsListViewItemCheckBox.cs
- DialogWindow.cs
- IndexedGlyphRun.cs
- StylusPointPropertyInfoDefaults.cs
- TypedDataSetSchemaImporterExtension.cs
- XmlSchemaAttributeGroupRef.cs