ContextNode.CreatePartiallyPopulatedSubNode (Método)
Actualización: noviembre 2007
Crea un objeto ContextNode secundario que sólo contiene la información siguiente: Type, Id y Location.
Espacio de nombres: System.Windows.Ink
Ensamblado: IAWinFX (en IAWinFX.dll)
Sintaxis
'Declaración
Public Function CreatePartiallyPopulatedSubNode ( _
type As Guid, _
nodeId As Guid, _
nodeLocation As AnalysisRegion _
) As ContextNode
'Uso
Dim instance As ContextNode
Dim type As Guid
Dim nodeId As Guid
Dim nodeLocation As AnalysisRegion
Dim returnValue As ContextNode
returnValue = instance.CreatePartiallyPopulatedSubNode(type, _
nodeId, nodeLocation)
public ContextNode CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion nodeLocation
)
public:
ContextNode^ CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion^ nodeLocation
)
public ContextNode CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion nodeLocation
)
public function CreatePartiallyPopulatedSubNode(
type : Guid,
nodeId : Guid,
nodeLocation : AnalysisRegion
) : ContextNode
Parámetros
- type
Tipo: System.Guid
Tipo de objeto ContextNode que se crea.
- nodeId
Tipo: System.Guid
Identificador del nuevo nodo.
- nodeLocation
Tipo: System.Windows.Ink.AnalysisRegion
Ubicación del nuevo nodo.
Valor devuelto
Tipo: System.Windows.Ink.ContextNode
Nuevo objeto ContextNode que sólo contiene información sobre Type, Idy Location. Este nuevo nodo es un elemento secundario de ContextNode.
Comentarios
Este método se utiliza para el proxy de datos como un modo de crear un objeto ContextNode en el árbol de nodos de contexto antes de que toda la información sobre él esté disponible. La demás información sobre él se puede agregar posteriormente.
Ejemplos
El ejemplo siguiente es un método denominado CreatePartiallyPopulatedNode, que utiliza un control [System.Windows.Controls.TreeView] como modelo de documento para mostrar cómo se puede usar el proxy de datos para almacenar y cargar un árbol de nodos de contexto para un objeto InkAnalyzer. La clase DocumentNodeData almacena los datos de ContextNode en el modelo de documento estableciendo la propiedad [System.Windows.FrameworkElement.Tag] de cada objeto TreeViewItem en un objeto DocumentNodeData. El método CreatePartiallyPopulatedNode usa un objeto TreeViewItem y un objeto InkAnalyzer para crear el nodo parcialmente lleno en el árbol de nodos de contexto InkAnalyzer que se corresponde con el control TreeViewItem del modelo de documento. En este ejemplo, todos los nodos se crean parcialmente llenos. Después, se colocan en una cola de nodos que se llena totalmente con datos de nodo más adelante.
El método obtiene los datos de nodo de la propiedad [System.Windows.FrameworkElement.Tag] del objeto TreeViewItem que se pasa. A continuación, el método utiliza Id para comprobar que el nodo no está actualmente en el árbol de nodos de contexto: utiliza el nodo primario de la vista de árbol para buscar el nodo primario correspondiente en InkAnalyzer. Si el nodo primario no existe todavía en el árbol de nodos de contexto, se agrega mediante recursividad. Si el nodo primario existe en el árbol, se debería llenar parcialmente; si estuviera lleno totalmente, ya contendría todos sus subnodos y no habría necesidad de agregar uno nuevo. Por consiguiente, la propiedad PartiallyPopulated comprueba que el nodo primario esté parcialmente lleno, en cuyo caso se agregaría a una cola para que se llenase completamente con posterioridad. Si no está relleno parcialmente, se produce una excepción. Finalmente, se llama al método [M:System.Windows.Ink.ContextNode.CreatePartiallyPopulatedSubNode (System.Windows.Ink.ContextNodeType,System.Guid,System.Windows.Ink.AnalysisRegion)] en el nodo primario y el nodo recién creado se agrega a la cola de nodos que se van a rellenar totalmente. Se devuelve el nuevo objeto ContextNode. Para obtener más información sobre el proxy de datos, vea Data Proxy with Ink Analysis.
Private Function CreatePartiallyPopulatedNode(ByVal documentNode As TreeViewItem, ByVal theInkAnalyzer As InkAnalyzer) As ContextNode
Dim nodeData As DocumentNodeData = documentNode.Tag '
' Check that the node does not already exist in the InkAnalyzer.
If Nothing <> theInkAnalyzer.FindNode(nodeData.Id) Then
Throw New ApplicationException("The node already exists in the InkAnalyzer.")
End If
' Find the parent analyzer node.
Dim parentNode As TreeViewItem = documentNode.Parent '
If parentNode Is Nothing Then
Throw New Exception("parentNode is not a TreeViewItem")
End If
Dim parentNodeData As DocumentNodeData = parentNode.Tag
Dim analyzerParentNode As ContextNode = theInkAnalyzer.FindNode(parentNodeData.Id)
If Nothing = analyzerParentNode Then
' The parent analyzer node does not exist yet. Create one.
analyzerParentNode = Me.CreatePartiallyPopulatedNode(parentNode, theInkAnalyzer)
ElseIf analyzerParentNode.PartiallyPopulated Then
' The parent analyzer node exists and is partially populated. Add it
' to the stack of nodes to fully populate.
Me.QueueNodeToPopulate(analyzerParentNode)
Else
' The parent analyzer node exists and is fully populated. This
' should not happen.
Throw New ApplicationException("The parent analyzer node is fully populated.")
End If
' Create the partially populated node under its parent analyzer node.
Dim analyzerNode As ContextNode = analyzerParentNode.CreatePartiallyPopulatedSubNode(nodeData.Type, nodeData.Id, nodeData.Location)
' Add the new node to the stack of nodes to fully populate.
Me.QueueNodeToPopulate(analyzerNode)
Return analyzerNode
End Function 'CreatePartiallyPopulatedNode
private ContextNode CreatePartiallyPopulatedNode(
TreeViewItem documentNode, InkAnalyzer theInkAnalyzer)
{
DocumentNodeData nodeData = documentNode.Tag as DocumentNodeData;
// Check that the node does not already exist in the InkAnalyzer.
if (null != theInkAnalyzer.FindNode(nodeData.Id))
{
throw new ApplicationException(
"The node already exists in the InkAnalyzer.");
}
// Find the parent analyzer node.
TreeViewItem parentNode = documentNode.Parent as TreeViewItem;
if (parentNode == null)
{
throw new Exception("parentNode is not a TreeViewItem");
}
DocumentNodeData parentNodeData =
parentNode.Tag as DocumentNodeData;
ContextNode analyzerParentNode =
theInkAnalyzer.FindNode(parentNodeData.Id);
if (null == analyzerParentNode)
{
// The parent analyzer node does not exist yet. Create one.
analyzerParentNode =
this.CreatePartiallyPopulatedNode(
parentNode, theInkAnalyzer);
}
else if (analyzerParentNode.PartiallyPopulated)
{
// The parent analyzer node exists and is partially populated. Add it
// to the stack of nodes to fully populate.
this.QueueNodeToPopulate(analyzerParentNode);
}
else
{
// The parent analyzer node exists and is fully populated. This
// should not happen.
throw new ApplicationException(
"The parent analyzer node is fully populated.");
}
// Create the partially populated node under its parent analyzer node.
ContextNode analyzerNode =
analyzerParentNode.CreatePartiallyPopulatedSubNode(
nodeData.Type, nodeData.Id, nodeData.Location);
// Add the new node to the stack of nodes to fully populate.
this.QueueNodeToPopulate(analyzerNode);
return analyzerNode;
}
Plataformas
Windows Vista
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Información de versión
.NET Framework
Compatible con: 3.0