Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Annotations / LocatorPart.cs / 1 / LocatorPart.cs
//------------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// ContentLocatorPart represents a set of name/value pairs that identify a
// piece of data within a certain context. The names and values are
// strings.
//
// Spec: http://team/sites/ag/Specifications/Simplifying%20Store%20Cache%20Model.doc
//
// History:
// 05/06/2004: ssimova: Created
// 06/30/2004: rruiz: Added change notifications to parent, clean-up
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Xml;
using MS.Internal.Annotations;
using MS.Internal.Annotations.Anchoring;
namespace System.Windows.Annotations
{
///
/// ContentLocatorPart represents a set of name/value pairs that identify a
/// piece of data within a certain context. The names and values are
/// all strings.
///
public sealed class ContentLocatorPart : INotifyPropertyChanged2, IOwnedObject
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Creates a ContentLocatorPart with the specified type name and namespace.
///
/// fully qualified locator part's type
/// partType is null
/// partType.Namespace or partType.Name is null or empty string
public ContentLocatorPart(XmlQualifiedName partType)
{
if (partType == null)
{
throw new ArgumentNullException("partType");
}
if (String.IsNullOrEmpty(partType.Name))
{
throw new ArgumentException(SR.Get(SRID.TypeNameMustBeSpecified), "partType.Name");
}
if (String.IsNullOrEmpty(partType.Namespace))
{
throw new ArgumentException(SR.Get(SRID.TypeNameMustBeSpecified), "partType.Namespace");
}
_type = partType;
_nameValues = new ObservableDictionary();
_nameValues.PropertyChanged += OnPropertyChanged;
}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
///
/// Compares two ContentLocatorParts for equality. They are equal if they
/// contain the same set of name/value pairs.
///
/// second locator part
/// true - the ContentLocatorParts are equal, false - different
public override bool Equals(object obj)
{
ContentLocatorPart part = obj as ContentLocatorPart;
string otherValue;
// We are equal to ourselves
if (part == this)
{
return true;
}
// Not a locator part
if (part == null)
{
return false;
}
// Have different type names
if (!_type.Equals(part.PartType))
{
return false;
}
// Have different number of name/value pairs
if (part.NameValuePairs.Count != _nameValues.Count)
{
return false;
}
foreach (KeyValuePair k_v in _nameValues)
{
// A name/value pair isn't present or has a different value
if (!part._nameValues.TryGetValue(k_v.Key, out otherValue))
{
return false;
}
if (k_v.Value != otherValue)
{
return false;
}
}
return true;
}
///
/// Returns the hashcode for this ContentLocatorPart.
///
/// hashcode
public override int GetHashCode()
{
return base.GetHashCode();
}
///
/// Create a deep clone of this ContentLocatorPart. The returned ContentLocatorPart
/// is equal to this ContentLocatorPart.
///
/// a deep clone of this ContentLocatorPart; never returns null
public object Clone()
{
ContentLocatorPart newPart = new ContentLocatorPart(_type);
foreach (KeyValuePair k_v in _nameValues)
{
newPart.NameValuePairs.Add(k_v.Key, k_v.Value);
}
return newPart;
}
#endregion Public Methods
//------------------------------------------------------
//
// Public Operators
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
#region Public Properties
///
///
///
public IDictionary NameValuePairs
{
get
{
return _nameValues;
}
}
///
/// Returns the ContentLocatorPart's type name.
///
/// qualified type name for this ContentLocatorPart
public XmlQualifiedName PartType
{
get
{
return _type;
}
}
#endregion Public Properties
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
#region Public Events
///
///
///
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add{ _propertyChanged += value; }
remove{ _propertyChanged -= value; }
}
#endregion Public Events
//-----------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
///
/// Determines if a locator part matches this locator part. Matches is
/// different from equals because a locator part may be defined to match
/// a range of locator parts, not just exact replicas.
///
internal bool Matches(ContentLocatorPart part)
{
bool overlaps = false;
string overlapsString;
_nameValues.TryGetValue(TextSelectionProcessor.IncludeOverlaps, out overlapsString);
// If IncludeOverlaps is true, a match is any locator part
// whose range overlaps with ours
if (Boolean.TryParse(overlapsString, out overlaps) && overlaps)
{
// We match ourselves
if (part == this)
{
return true;
}
// Have different type names
if (!_type.Equals(part.PartType))
{
return false;
}
int desiredStartOffset;
int desiredEndOffset;
TextSelectionProcessor.GetMaxMinLocatorPartValues(this, out desiredStartOffset, out desiredEndOffset);
int startOffset;
int endOffset;
TextSelectionProcessor.GetMaxMinLocatorPartValues(part, out startOffset, out endOffset);
// Take care of an exact match to us (which may include offset==MinValue
// which we don't want to handle with the formula below.
if (desiredStartOffset == startOffset && desiredEndOffset == endOffset)
{
return true;
}
// Take care of the special case of no content to match to
if (desiredStartOffset == int.MinValue)
{
return false;
}
if ((startOffset >= desiredStartOffset && startOffset <= desiredEndOffset)
|| (startOffset < desiredStartOffset && endOffset >= desiredStartOffset))
{
return true;
}
return false;
}
return this.Equals(part);
}
///
/// Produces an XPath fragment that selects for matches to this ContentLocatorPart.
///
/// namespace manager used to look up prefixes
/// an XPath fragment that selects for matches to this ContentLocatorPart
internal string GetQueryFragment(XmlNamespaceManager namespaceManager)
{
bool overlaps = false;
string overlapsString;
_nameValues.TryGetValue(TextSelectionProcessor.IncludeOverlaps, out overlapsString);
if (Boolean.TryParse(overlapsString, out overlaps) && overlaps)
{
return GetOverlapQueryFragment(namespaceManager);
}
else
{
return GetExactQueryFragment(namespaceManager);
}
}
#endregion Internal Methods
//------------------------------------------------------
//
// Internal Operators
//
//-----------------------------------------------------
//------------------------------------------------------
//
// Internal Properties
//
//-----------------------------------------------------
#region Internal Properties
///
///
bool IOwnedObject.Owned
{
get
{
return _owned;
}
set
{
_owned = value;
}
}
#endregion Internal Properties
//-----------------------------------------------------
//
// Private Methods
//
//-----------------------------------------------------
#region Private Methods
///
/// Notify the owner this ContentLocatorPart has changed.
///
private void OnPropertyChanged(Object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (_propertyChanged != null)
{
_propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs("NameValuePairs"));
}
}
///
/// Produces an XPath fragment that selects for ContentLocatorParts with an anchor that
/// intersects with the range specified by this ContentLocatorPart.
///
/// namespace manager used to look up prefixes
private string GetOverlapQueryFragment(XmlNamespaceManager namespaceManager)
{
string corePrefix = namespaceManager.LookupPrefix(AnnotationXmlConstants.Namespaces.CoreSchemaNamespace);
string prefix = namespaceManager.LookupPrefix(this.PartType.Namespace);
string res = prefix == null ? "" : (prefix + ":");
res += TextSelectionProcessor.CharacterRangeElementName.Name + "/" + corePrefix + ":"+AnnotationXmlConstants.Elements.Item;
int startOffset;
int endOffset;
TextSelectionProcessor.GetMaxMinLocatorPartValues(this, out startOffset, out endOffset);
string startStr = startOffset.ToString(NumberFormatInfo.InvariantInfo);
string endStr = endOffset.ToString(NumberFormatInfo.InvariantInfo);
// Note: this will never match if offsetStr == 0. Which makes sense - there
// is no content to get anchors for.
res += "[starts-with(@" + AnnotationXmlConstants.Attributes.ItemName + ", \"" + TextSelectionProcessor.SegmentAttribute + "\") and " +
" ((substring-before(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") >= " + startStr + " and substring-before(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") <= " + endStr + ") or " +
" (substring-before(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") < " + startStr + " and substring-after(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") >= " + startStr + "))]";
return res;
}
///
/// Produces an XPath fragment that selects ContentLocatorParts of the same type
/// and containing the exact name/values this ContentLocatorPart contains.
///
/// namespaceManager used to generate the XPath fragment
private string GetExactQueryFragment(XmlNamespaceManager namespaceManager)
{
string corePrefix = namespaceManager.LookupPrefix(AnnotationXmlConstants.Namespaces.CoreSchemaNamespace);
string prefix = namespaceManager.LookupPrefix(this.PartType.Namespace);
string res = prefix == null ? "" : (prefix + ":");
res += this.PartType.Name;
bool and = false;
foreach (KeyValuePair k_v in ((ICollection>)this.NameValuePairs))
{
if (and)
{
res += "/parent::*/" + corePrefix + ":" + AnnotationXmlConstants.Elements.Item + "[";
}
else
{
and = true;
res += "/" + corePrefix + ":" + AnnotationXmlConstants.Elements.Item + "[";
}
res += "@" + AnnotationXmlConstants.Attributes.ItemName + "=\"" + k_v.Key + "\" and @" + AnnotationXmlConstants.Attributes.ItemValue + "=\"" + k_v.Value + "\"]";
}
if (and)
{
res += "/parent::*";
}
return res;
}
#endregion Private Methods
//------------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
///
///
private bool _owned;
///
/// The ContentLocatorPart's type name.
///
private XmlQualifiedName _type;
///
/// The internal data structure.
///
private ObservableDictionary _nameValues;
///
private event PropertyChangedEventHandler _propertyChanged;
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// ContentLocatorPart represents a set of name/value pairs that identify a
// piece of data within a certain context. The names and values are
// strings.
//
// Spec: http://team/sites/ag/Specifications/Simplifying%20Store%20Cache%20Model.doc
//
// History:
// 05/06/2004: ssimova: Created
// 06/30/2004: rruiz: Added change notifications to parent, clean-up
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Xml;
using MS.Internal.Annotations;
using MS.Internal.Annotations.Anchoring;
namespace System.Windows.Annotations
{
///
/// ContentLocatorPart represents a set of name/value pairs that identify a
/// piece of data within a certain context. The names and values are
/// all strings.
///
public sealed class ContentLocatorPart : INotifyPropertyChanged2, IOwnedObject
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Creates a ContentLocatorPart with the specified type name and namespace.
///
/// fully qualified locator part's type
/// partType is null
/// partType.Namespace or partType.Name is null or empty string
public ContentLocatorPart(XmlQualifiedName partType)
{
if (partType == null)
{
throw new ArgumentNullException("partType");
}
if (String.IsNullOrEmpty(partType.Name))
{
throw new ArgumentException(SR.Get(SRID.TypeNameMustBeSpecified), "partType.Name");
}
if (String.IsNullOrEmpty(partType.Namespace))
{
throw new ArgumentException(SR.Get(SRID.TypeNameMustBeSpecified), "partType.Namespace");
}
_type = partType;
_nameValues = new ObservableDictionary();
_nameValues.PropertyChanged += OnPropertyChanged;
}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
///
/// Compares two ContentLocatorParts for equality. They are equal if they
/// contain the same set of name/value pairs.
///
/// second locator part
/// true - the ContentLocatorParts are equal, false - different
public override bool Equals(object obj)
{
ContentLocatorPart part = obj as ContentLocatorPart;
string otherValue;
// We are equal to ourselves
if (part == this)
{
return true;
}
// Not a locator part
if (part == null)
{
return false;
}
// Have different type names
if (!_type.Equals(part.PartType))
{
return false;
}
// Have different number of name/value pairs
if (part.NameValuePairs.Count != _nameValues.Count)
{
return false;
}
foreach (KeyValuePair k_v in _nameValues)
{
// A name/value pair isn't present or has a different value
if (!part._nameValues.TryGetValue(k_v.Key, out otherValue))
{
return false;
}
if (k_v.Value != otherValue)
{
return false;
}
}
return true;
}
///
/// Returns the hashcode for this ContentLocatorPart.
///
/// hashcode
public override int GetHashCode()
{
return base.GetHashCode();
}
///
/// Create a deep clone of this ContentLocatorPart. The returned ContentLocatorPart
/// is equal to this ContentLocatorPart.
///
/// a deep clone of this ContentLocatorPart; never returns null
public object Clone()
{
ContentLocatorPart newPart = new ContentLocatorPart(_type);
foreach (KeyValuePair k_v in _nameValues)
{
newPart.NameValuePairs.Add(k_v.Key, k_v.Value);
}
return newPart;
}
#endregion Public Methods
//------------------------------------------------------
//
// Public Operators
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
#region Public Properties
///
///
///
public IDictionary NameValuePairs
{
get
{
return _nameValues;
}
}
///
/// Returns the ContentLocatorPart's type name.
///
/// qualified type name for this ContentLocatorPart
public XmlQualifiedName PartType
{
get
{
return _type;
}
}
#endregion Public Properties
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
#region Public Events
///
///
///
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add{ _propertyChanged += value; }
remove{ _propertyChanged -= value; }
}
#endregion Public Events
//-----------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
///
/// Determines if a locator part matches this locator part. Matches is
/// different from equals because a locator part may be defined to match
/// a range of locator parts, not just exact replicas.
///
internal bool Matches(ContentLocatorPart part)
{
bool overlaps = false;
string overlapsString;
_nameValues.TryGetValue(TextSelectionProcessor.IncludeOverlaps, out overlapsString);
// If IncludeOverlaps is true, a match is any locator part
// whose range overlaps with ours
if (Boolean.TryParse(overlapsString, out overlaps) && overlaps)
{
// We match ourselves
if (part == this)
{
return true;
}
// Have different type names
if (!_type.Equals(part.PartType))
{
return false;
}
int desiredStartOffset;
int desiredEndOffset;
TextSelectionProcessor.GetMaxMinLocatorPartValues(this, out desiredStartOffset, out desiredEndOffset);
int startOffset;
int endOffset;
TextSelectionProcessor.GetMaxMinLocatorPartValues(part, out startOffset, out endOffset);
// Take care of an exact match to us (which may include offset==MinValue
// which we don't want to handle with the formula below.
if (desiredStartOffset == startOffset && desiredEndOffset == endOffset)
{
return true;
}
// Take care of the special case of no content to match to
if (desiredStartOffset == int.MinValue)
{
return false;
}
if ((startOffset >= desiredStartOffset && startOffset <= desiredEndOffset)
|| (startOffset < desiredStartOffset && endOffset >= desiredStartOffset))
{
return true;
}
return false;
}
return this.Equals(part);
}
///
/// Produces an XPath fragment that selects for matches to this ContentLocatorPart.
///
/// namespace manager used to look up prefixes
/// an XPath fragment that selects for matches to this ContentLocatorPart
internal string GetQueryFragment(XmlNamespaceManager namespaceManager)
{
bool overlaps = false;
string overlapsString;
_nameValues.TryGetValue(TextSelectionProcessor.IncludeOverlaps, out overlapsString);
if (Boolean.TryParse(overlapsString, out overlaps) && overlaps)
{
return GetOverlapQueryFragment(namespaceManager);
}
else
{
return GetExactQueryFragment(namespaceManager);
}
}
#endregion Internal Methods
//------------------------------------------------------
//
// Internal Operators
//
//-----------------------------------------------------
//------------------------------------------------------
//
// Internal Properties
//
//-----------------------------------------------------
#region Internal Properties
///
///
bool IOwnedObject.Owned
{
get
{
return _owned;
}
set
{
_owned = value;
}
}
#endregion Internal Properties
//-----------------------------------------------------
//
// Private Methods
//
//-----------------------------------------------------
#region Private Methods
///
/// Notify the owner this ContentLocatorPart has changed.
///
private void OnPropertyChanged(Object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (_propertyChanged != null)
{
_propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs("NameValuePairs"));
}
}
///
/// Produces an XPath fragment that selects for ContentLocatorParts with an anchor that
/// intersects with the range specified by this ContentLocatorPart.
///
/// namespace manager used to look up prefixes
private string GetOverlapQueryFragment(XmlNamespaceManager namespaceManager)
{
string corePrefix = namespaceManager.LookupPrefix(AnnotationXmlConstants.Namespaces.CoreSchemaNamespace);
string prefix = namespaceManager.LookupPrefix(this.PartType.Namespace);
string res = prefix == null ? "" : (prefix + ":");
res += TextSelectionProcessor.CharacterRangeElementName.Name + "/" + corePrefix + ":"+AnnotationXmlConstants.Elements.Item;
int startOffset;
int endOffset;
TextSelectionProcessor.GetMaxMinLocatorPartValues(this, out startOffset, out endOffset);
string startStr = startOffset.ToString(NumberFormatInfo.InvariantInfo);
string endStr = endOffset.ToString(NumberFormatInfo.InvariantInfo);
// Note: this will never match if offsetStr == 0. Which makes sense - there
// is no content to get anchors for.
res += "[starts-with(@" + AnnotationXmlConstants.Attributes.ItemName + ", \"" + TextSelectionProcessor.SegmentAttribute + "\") and " +
" ((substring-before(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") >= " + startStr + " and substring-before(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") <= " + endStr + ") or " +
" (substring-before(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") < " + startStr + " and substring-after(@" + AnnotationXmlConstants.Attributes.ItemValue + ",\",\") >= " + startStr + "))]";
return res;
}
///
/// Produces an XPath fragment that selects ContentLocatorParts of the same type
/// and containing the exact name/values this ContentLocatorPart contains.
///
/// namespaceManager used to generate the XPath fragment
private string GetExactQueryFragment(XmlNamespaceManager namespaceManager)
{
string corePrefix = namespaceManager.LookupPrefix(AnnotationXmlConstants.Namespaces.CoreSchemaNamespace);
string prefix = namespaceManager.LookupPrefix(this.PartType.Namespace);
string res = prefix == null ? "" : (prefix + ":");
res += this.PartType.Name;
bool and = false;
foreach (KeyValuePair k_v in ((ICollection>)this.NameValuePairs))
{
if (and)
{
res += "/parent::*/" + corePrefix + ":" + AnnotationXmlConstants.Elements.Item + "[";
}
else
{
and = true;
res += "/" + corePrefix + ":" + AnnotationXmlConstants.Elements.Item + "[";
}
res += "@" + AnnotationXmlConstants.Attributes.ItemName + "=\"" + k_v.Key + "\" and @" + AnnotationXmlConstants.Attributes.ItemValue + "=\"" + k_v.Value + "\"]";
}
if (and)
{
res += "/parent::*";
}
return res;
}
#endregion Private Methods
//------------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
///
///
private bool _owned;
///
/// The ContentLocatorPart's type name.
///
private XmlQualifiedName _type;
///
/// The internal data structure.
///
private ObservableDictionary _nameValues;
///
private event PropertyChangedEventHandler _propertyChanged;
#endregion Private Fields
}
}
// 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
- IpcChannel.cs
- AuthenticodeSignatureInformation.cs
- ClientOptions.cs
- SafeEventLogWriteHandle.cs
- MetafileHeaderEmf.cs
- FormDesigner.cs
- ProtocolElementCollection.cs
- PolygonHotSpot.cs
- Int16Storage.cs
- DataListItem.cs
- UriPrefixTable.cs
- EntityDataSourceChangingEventArgs.cs
- Tile.cs
- CssTextWriter.cs
- LambdaCompiler.Unary.cs
- FontFamilyValueSerializer.cs
- IndentedTextWriter.cs
- JavascriptCallbackResponseProperty.cs
- AjaxFrameworkAssemblyAttribute.cs
- ClientBuildManager.cs
- TypeUnloadedException.cs
- NodeLabelEditEvent.cs
- SqlClientWrapperSmiStreamChars.cs
- ChangeInterceptorAttribute.cs
- SettingsContext.cs
- ListBoxAutomationPeer.cs
- WebConfigurationHostFileChange.cs
- BlockUIContainer.cs
- BitVec.cs
- IISUnsafeMethods.cs
- Brush.cs
- HyperlinkAutomationPeer.cs
- TraceUtility.cs
- PartialToken.cs
- SiteMapDataSourceView.cs
- Table.cs
- AnnouncementEndpointElement.cs
- BuildProvidersCompiler.cs
- ScrollViewer.cs
- FromReply.cs
- InputMethodStateTypeInfo.cs
- SupportsEventValidationAttribute.cs
- ProfileInfo.cs
- ExpressionEditorAttribute.cs
- ClientProxyGenerator.cs
- RecognizerInfo.cs
- TypeSystem.cs
- PropertyToken.cs
- RouteParametersHelper.cs
- MouseBinding.cs
- SqlNotificationEventArgs.cs
- TrackBar.cs
- NetWebProxyFinder.cs
- SchemaTypeEmitter.cs
- BoolExpression.cs
- DependencyProperty.cs
- StaticExtensionConverter.cs
- XmlHelper.cs
- XmlCharCheckingReader.cs
- CodeTypeConstructor.cs
- ObjectFullSpanRewriter.cs
- SHA256Managed.cs
- RecipientInfo.cs
- ConfigXmlCDataSection.cs
- WindowsRegion.cs
- ClockController.cs
- OperationResponse.cs
- WindowsScrollBarBits.cs
- ObjectSerializerFactory.cs
- TopClause.cs
- PartitionedStream.cs
- SystemFonts.cs
- MemberAssignmentAnalysis.cs
- EventListener.cs
- ArrayElementGridEntry.cs
- CodeSubDirectoriesCollection.cs
- RenderData.cs
- FontWeights.cs
- BinaryObjectWriter.cs
- CounterSample.cs
- SchemaMapping.cs
- MultilineStringConverter.cs
- StateFinalizationDesigner.cs
- FtpCachePolicyElement.cs
- PropertyTabAttribute.cs
- ExpressionLexer.cs
- ListView.cs
- DataGridTextBoxColumn.cs
- CssStyleCollection.cs
- TakeQueryOptionExpression.cs
- TypeContext.cs
- FlowDecision.cs
- ObjectListCommandEventArgs.cs
- InstanceStoreQueryResult.cs
- ArraySortHelper.cs
- Stylus.cs
- MeasurementDCInfo.cs
- PrivilegeNotHeldException.cs
- Command.cs
- Rotation3DAnimation.cs