This documentation is archived and is not being maintained.

Microsoft.VisualStudio.GraphModel Namespace

This namespace provides the API to directed graphs.

For more information, see Edit and Customize Dependency Graphs.

Public classDynamicGraphMetaObject
Public classGraphRepresents a directed graph that consists of nodes and links.
Public classGraphCategoryGraph Categories are used to specify category information on a GraphObject, like nodes and links.
Public classGraphCategoryChangedEventArgs
Public classGraphCategoryCollection
Public classGraphCommand
Public classGraphCommandDefinitionDefines a particular command definition that can be used to group GraphCommands.
Public classGraphCommonSchemaDefines a set of commonly used GraphProperty objects.
Public classGraphDataObjectThis class provides IDataObject support for exchanging DGML data via the clipboard and drag/drop.
Public classGraphDeserializationProgressEventArgsRepresents the current progress that the deserializer has made in deserializing the input.
Public classGraphEnumerableExtension methods for graph types.
Public classGraphExceptionAn exception that is thrown when a parsing error occurs during a GraphNodeId.Parse
Public classGraphGroupA wrapper on nodes that have IsGroup=true. They do not have a separate identity; they use the identity of the node that they wrap.
Public classGraphLinkRepresents a link in the directed graph.
Public classGraphLinkCollectionInstances of this class manage a collection of Links. Ordering is not preserved.
Public classGraphMetadataThis class is used to provide more information about a GraphProperty, including localized strings and flags for controlling how the property appears in a Property Grid window.
Public classGraphMetadataContainerAn object that can have graph specific metadata associated with it.
Public classGraphNavigateToItemRanksCommon rank values for the IGraphNavigateToItem extension.
Public classGraphNodeRepresents a node in the directed graph
Public classGraphNodeCollectionThis class provides methods for manipulating a collection of Nodes. This class does not preserve the order in which you added the nodes, so that when you enumerate them you will get them back in a random order.
Public classGraphNodeIdA GraphNodeId is a name/value pair, for example "a=b". The left part of this identifier ("a") is represented by a GraphNodeIdName called the "name" and the right hand side, "b" is the "value" part. The value part of a GraphNodeId can be one of the following: * String * Uri * GraphNodeId * GraphNodeIdCollection. Since the Value can be a GraphNodeId or GraphNodeIdCollection, we can use parentheses "()" to specify nesting: e.g., a=(b=c) a=(b=c d=e) (a=b c=d). To construct a nested GraphNodeId list for (a=b c=d), create a GraphNodeIdCollection and assign it to a GraphNodeId:GraphNodeId.Get(GraphNodeIdName.Nested, new GraphNodeIdCollection( GraphNodeId.Get(MyGraphNodeIdNames.a, "b") GraphNodeId.Get(MyGraphNodeIdNames.c, "d")); You can also create this GraphNodeId by using the following simple arithmetic:GraphNodeId ab = GraphNodeId.Get("(a=b)"); GraphNodeId abcd = ab + "(c=d)"; // Yields (a=b c=d) The result can be converted to a string by using ToString() or an implicit string cast operator and will produce "(a=b c=d)".Since GraphNodeIds are stored singleton in a HashSet, they can be compared using operator ==.
Public classGraphNodeIdCollectionContains a list of GraphNodeIds. This can be stored inside the .Value part of a GraphNodeId. This is an immutable list as soon as it is created. We use an abstract class because this class does not know the formatting required to serialize the list back out to a string. The derived class will know this.
Public classGraphNodeIdConverterA type converter that can be used to convert to and from GraphNodeId. The editor converter derives from this one.
Public classGraphNodeIdNameThe GraphNodeIdName to give to a GraphNodeId. This forms the name and data type of the GraphNodeId.
Public classGraphNodeIdPropertyDescriptorThis is a custom PropertyDescriptor that is used to populate a row in the PropertyGrid with XmlAttribute information and corresponding localized strings for labels and descriptions.
Public classGraphObjectThis class makes an object extensible by adding a strongly typed property bag of name/value pairs.
Public classGraphObjectChangedEventArgsThese event args are used by the GraphNodeCollection and GraphLinkCollection Added and Removed events so that you can track which nodes and links are added and removed from the graph.
Public classGraphPathSerializationDictionaryThe CommonPaths lets you remap certain attribute values in the DGML. For example, it is nice to have a file path be relative to the solution so the file can be found when that solution is moved. To solve this you can define a path called "SolutionDir" with the value of the full path. Then the GraphSerializer will substitute this path wherever it is found in the DGML with the syntax "$(name)" where name is the Id of the path you provided and it will write out the definition of the paths that are used in a Paths block at the end of the file. When this DGML document is loaded the paths will be substituted with the values in the current CommonPaths and then all the variable references will be expanded with these new values.So a solution folder on your computer might be on drive C someplace, and on drive D on another computer and everything will still just work as expected.
Public classGraphPathSerializerThis class re-writes string values by using the path names in the given CommonPaths. It provides a Serialize method that substitutes paths with a $(name) syntax where the name is the name of the path as registered in the CommonPaths. It also provides a Deserialize method that does the reverse. When all Serialization has completed, you can query the Used property to get a list of just the paths that were used by the Serialize or Deserialize methods.
Public classGraphPropertyGraph Properties are used to annotate a GraphObject, like nodes and links.
Public classGraphPropertyCollection
Public classGraphProviderAttributeAttribute to indicate that the target type is a graph provider.
Public classGraphSchemaA GraphSchema is a simple container of a set of GraphCategory and GraphProperty objects and the GraphMetadata associated with them.
Public classGraphSerializationErrorEventArgsThis class is used to communicate serialization errors if the caller passes a handler to the serializer.
Public classGraphSerializationSettingsSettings for serializing a graph.
Public classGraphTransactionCanceledExceptionThis class can be used to cancel a graph transaction scope and communicate up to the UI layer of your application a reason for the cancelation.
Public classGraphTransactionScopeRepresents a highly optimized wrapper around System.Transactions.TransactionScope. This extensively uses thread local storage and is therefore thread-bound. GraphTransactionScope is meant to be called from a using() class, same as TransactionScope.
Public classGraphUndoManager<T>This class wraps the IOleUndoManager from Visual Studio and adds undo unit merging.
Public classGraphUndoUnitThis class represents one undoable graph change which appears on the VS undo stack.
Public classGraphUpdatedEventArgsProvides changes to a graph object.
Public classUndoableGraphTransactionScopeThis is a special graph transaction scope that can be used for undoable edits (that appear in the host application undo stack).

Public interfaceIGraphContextInterface representing a context which specifies a desired set of data. Providers place the requested data in the provided graph and the output nodes collection.
Public interfaceIGraphFormattedLabelInterface representing an extension that can provide optional formatted labels for a GraphObject (that is, labels that are not permanently stored with the object).
Public interfaceIGraphNavigateToItemInterface representing an extension that can navigate to the item represented by a GraphObject.
Public interfaceIGraphProvider
Public interfaceIGraphProviderMetadataMetadata that describes a GraphProvider. This data is used to lazily load the provider only when it is necessary.
Public interfaceIGraphProviderRankableExtensionWhen more than one graph provider supports an extension type on a graph object, only one extension instance has to be chosen to be invoked. This interface represents an extension that can provide its rank and by doing that influence the selection of an extension instance to be invoked. An extension instance with the greatest rank value will be choosen.
Public interfaceIHasGraphOwnerAn interface for objects that have an owning Graph object.
Public interfaceIReadOnlyCollection<T>Simple interface that exposes a Count property over a collection

Public enumerationAggregatorKindEnumeration of the various kinds of aggregation operations for properties set by multiple IGraphProviders.
Public enumerationDelayedDataStateEnum for properties representing states of data that can get fetched into the graph in a delayed manner (on-demand or asynchronously).
Public enumerationGraphCategoryChangeType
Public enumerationGraphCategoryMatchOptionThis enumeration defines options that you have when matching categories.
Public enumerationGraphContextDirectionEnumeration of possible GraphContext search directions.
Public enumerationGraphGroupStyleSpecifies the display state of an element.
Public enumerationGraphMetadataOptionsBit flags used to control the behavior a GraphProperty.
Public enumerationGraphSearchDirection
Public enumerationGraphSearchOptionThis enum defines the choices you have when you search the graph
Public enumerationGraphTransactionScopeOptionsOptions for the GraphTransactionScope.
Public enumerationUndoOptionThis enum controls how the undoable operation is treated on the undo stack.