Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Data / XmlDataCollection.cs / 1 / XmlDataCollection.cs
//---------------------------------------------------------------------------- // //// Copyright (C) 2003 by Microsoft Corporation. All rights reserved. // // // // Description: Data collection produced by an XmlDataProvider // // Specs: [....]/connecteddata/M5%20Specs/IDataCollection.mht // //--------------------------------------------------------------------------- using System.Xml; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Windows.Data; using System.Windows.Markup; namespace MS.Internal.Data { ////// Implementation of a data collection based on ArrayList, /// implementing INotifyCollectionChanged to notify listeners /// when items get added, removed or the whole list is refreshed. /// internal class XmlDataCollection : ReadOnlyObservableCollection{ //----------------------------------------------------- // // Constructors // //----------------------------------------------------- /// /// Initializes a new instance of XmlDataCollection that is empty and has the specified initial capacity. /// /// Parent Xml Data Source internal XmlDataCollection(XmlDataProvider xmlDataProvider) : base(new ObservableCollection()) { _xds = xmlDataProvider; } //------------------------------------------------------ // // Internal Properties // //----------------------------------------------------- /// /// XmlNamespaceManager property, XmlNamespaceManager used for executing XPath queries. /// internal XmlNamespaceManager XmlNamespaceManager { get { if (_nsMgr == null && _xds != null) _nsMgr = _xds.XmlNamespaceManager; return _nsMgr; } set { _nsMgr = value; } } internal XmlDataProvider ParentXmlDataProvider { get { return _xds; } } //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ // return true if the counts are different or the identity of the nodes have changed internal bool CollectionHasChanged(XmlNodeList nodes) { int count = this.Count; if (count != nodes.Count) return true; for (int i = 0; i < count; ++i) { if (this[i] != nodes[i]) return true; } return false; } // Update the collection using new query results internal void SynchronizeCollection(XmlNodeList nodes) { if (nodes == null) { Items.Clear(); return; } int i = 0, j; while (i < this.Count && i < nodes.Count) { if (this[i] != nodes[i]) { // starting after current node, see if the old node is still in the new list. for (j = i + 1; j < nodes.Count; ++j) { if (this[i] == nodes[j]) { break; } } if (j < nodes.Count) { // the node from existing collection is found at [j] in the new collection; // this means the node(s) [i ~ j-1] in new collection should be inserted. while (i < j) { Items.Insert(i, nodes[i]); ++i; } ++i; // advance to next node } else { // the node from existing collection is no longer in // the new collection, delete it. Items.RemoveAt(i); // do not advance to the next node } } else { // nodes are the same; advance to the next node. ++i; } } // Remove any extra nodes left over in the old collection while (i < this.Count) { Items.RemoveAt(i); } // Add any extra new nodes from the new collection while (i < nodes.Count) { Items.Insert(i, nodes[i]); ++i; } } private XmlDataProvider _xds; private XmlNamespaceManager _nsMgr; } } // 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
- CSharpCodeProvider.cs
- StylusTouchDevice.cs
- TCPClient.cs
- XpsFixedPageReaderWriter.cs
- PeerContact.cs
- cache.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- DataBindingCollectionConverter.cs
- HttpFileCollection.cs
- DataBinder.cs
- StrokeNodeData.cs
- PersianCalendar.cs
- DataSourceCacheDurationConverter.cs
- CookieProtection.cs
- WebProxyScriptElement.cs
- TrackingStringDictionary.cs
- ReliabilityContractAttribute.cs
- Sequence.cs
- TemplateControlCodeDomTreeGenerator.cs
- ColumnMapCopier.cs
- DefaultBindingPropertyAttribute.cs
- XmlValueConverter.cs
- XmlnsDictionary.cs
- RouteTable.cs
- ScriptingJsonSerializationSection.cs
- InputLanguage.cs
- EnumerableWrapperWeakToStrong.cs
- DesignTimeVisibleAttribute.cs
- CharAnimationUsingKeyFrames.cs
- HttpDictionary.cs
- DecimalConstantAttribute.cs
- HttpCookie.cs
- GestureRecognizer.cs
- Latin1Encoding.cs
- Overlapped.cs
- RestHandler.cs
- DataGridViewAddColumnDialog.cs
- ScriptResourceMapping.cs
- PanelDesigner.cs
- Context.cs
- RegularExpressionValidator.cs
- GradientStopCollection.cs
- DataSourceSelectArguments.cs
- COMException.cs
- IsolatedStorageFile.cs
- VirtualizingStackPanel.cs
- PassportPrincipal.cs
- DesignerEditorPartChrome.cs
- ListSourceHelper.cs
- PrefixQName.cs
- MethodBody.cs
- UnaryOperationBinder.cs
- BaseAddressPrefixFilterElementCollection.cs
- CalendarDay.cs
- SafeRightsManagementPubHandle.cs
- TemplateManager.cs
- PermissionAttributes.cs
- ScriptResourceAttribute.cs
- SafeFreeMibTable.cs
- FormViewCommandEventArgs.cs
- Int32AnimationUsingKeyFrames.cs
- SignedPkcs7.cs
- Privilege.cs
- BuilderElements.cs
- XmlBinaryReaderSession.cs
- DataGridSortCommandEventArgs.cs
- ExclusiveCanonicalizationTransform.cs
- MessageEncodingBindingElement.cs
- TripleDESCryptoServiceProvider.cs
- ServiceOperationInvoker.cs
- Crypto.cs
- XmlReaderSettings.cs
- AssemblyInfo.cs
- QueueAccessMode.cs
- AtomServiceDocumentSerializer.cs
- Point3DCollectionConverter.cs
- PathSegmentCollection.cs
- VirtualPathProvider.cs
- QualifiedCellIdBoolean.cs
- DependencyProperty.cs
- HostProtectionPermission.cs
- RenderDataDrawingContext.cs
- CompositionTarget.cs
- Registration.cs
- AutomationPropertyChangedEventArgs.cs
- XmlSchema.cs
- ProfileSettingsCollection.cs
- Block.cs
- RequestQueue.cs
- _RequestCacheProtocol.cs
- DataSvcMapFileSerializer.cs
- XmlStrings.cs
- WorkflowIdleBehavior.cs
- TextServicesHost.cs
- RelativeSource.cs
- _Connection.cs
- SplineQuaternionKeyFrame.cs
- MetadataUtilsSmi.cs
- XmlDataImplementation.cs
- RadioButtonFlatAdapter.cs