Compartir a través de


ContextNode.PartiallyPopulated (Propiedad)

Actualización: noviembre 2007

Obtiene o establece un valor que indica si un objeto ContextNode está relleno parcial o totalmente.

Espacio de nombres:  Microsoft.Ink
Ensamblado:  Microsoft.Ink.Analysis (en Microsoft.Ink.Analysis.dll)

Sintaxis

'Declaración
Public Property PartiallyPopulated As Boolean
'Uso
Dim instance As ContextNode
Dim value As Boolean

value = instance.PartiallyPopulated

instance.PartiallyPopulated = value
public bool PartiallyPopulated { get; set; }
public:
property bool PartiallyPopulated {
    bool get ();
    void set (bool value);
}
/** @property */
public boolean get_PartiallyPopulated()
/** @property */
public  void set_PartiallyPopulated(boolean value)
public function get PartiallyPopulated () : boolean
public function set PartiallyPopulated (value : boolean)

Valor de propiedad

Tipo: System.Boolean
Es true si el objeto ContextNode no contiene los datos completos durante el proceso del proxy de datos; es false si se han agregado todos los datos.

Comentarios

Utilice esta propiedad para el proxy de datos si los objetos ContextNode se crean en el árbol de nodos de contexto antes de que esté disponible toda la información. Esta propiedad indica si se han rellenado los datos por completo.

Al establecer este valor a verdadero, si ContextNode no es un objeto RootNode, CustomRecognizer, AnalysisHint o ContextNode desconocido, deberá tener un valor Location no vacío.

Si se elimina un trazo y éste no se encuentra en la caché de trazos, y parte del árbol está marcado como PartiallyPopulated, no se informa a la aplicación mediante eventos que debería quitar ese trazo de InkAnalyzer. La aplicación es responsable de quitar el trazo.

Cuando virtualice el árbol de documentos, asegúrese de establecer el valor PropertyGuidsForContextNodes.RotatedBoundingBox (utilizando ContextNode.AddPropertyValue) en todos los objetos ContextNode. InkAnalyzer calcula la propiedad RotatedBoundingBox, y debería estar en todos los ContextNodes de escritura de forma predeterminada. Sin embargo, si la aplicación virtualiza los resultados del análisis estableciendo la propiedad PartiallyPopulated, cuando administre el evento PopulateContextNode asegúrese de rellenar la propiedad RotatedBoundingBox. Si no se establece la propiedad RotatedBoundingBox es posible que se utilicen más datos del documento en la operación de análisis actual

Ejemplos

El ejemplo siguiente es un método denominado PopulateNode, perteneciente a código de ejemplo que utiliza System.Windows.Forms.TreeView como un modelo de documento para mostrar cómo se puede utilizar el proxy de datos para almacenar y cargar un árbol de nodos de contexto de un objeto InkAnalyzer. La clase DocumentNodeData almacena los datos del objeto ContextNode en el modelo de documento si la propiedad Tag de cada objeto TreeNode se establece en un objeto DocumentNodeData.

El método PopulateNode utiliza los objetos ContextNode y InkAnalyzer para rellenar totalmente el nodo de contexto agregando trazos, datos de la propiedad, tipo de anotación, nodos secundarios y vínculos. Los datos proceden del objeto DocumentNodeData que se obtiene del objeto TreeNode correspondiente.

  • this[analyzerNode.Id] es un indizador en la clase del modelo de documento que asigna un objeto Guid a un objeto TreeNode.

  • AddLinksToAnalyer es un método en la clase del modelo de documento que agrega vínculos al objeto ContextNode.

Una vez rellenado totalmente el nodo, la propiedad PartiallyPopulated se establece en false.

Sub PopulateNode(ByVal analyzerNode As Microsoft.Ink.ContextNode, _
                 ByVal theInkAnalyzer As Microsoft.Ink.InkAnalyzer) _
                 Implements IDocumentModel.PopulateNode

    System.Diagnostics.Debug.WriteLine( _
        String.Format("IDocumentModel.PopulateNode: populate {0} {1}.", _
        TreeViewDocumentModel.GetContextNodeTypeName(analyzerNode.Type), analyzerNode.Id))

    System.Diagnostics.Debug.Indent()

    ' Get the document node associated with the analyzer node.
    Dim documentNode As TreeNode = Me(analyzerNode.Id)
    If documentNode Is Nothing Then
        Throw New ApplicationException("The requested node does not exist in the document model.")
    End If

    ' Get the data associated with the node.
    Dim nodeData As DocumentNodeData = documentNode.Tag '

    ' Copy any application specific data associated with the node to the
    ' partially populated ContextNode.
    Dim identifier As Guid
    For Each identifier In nodeData.GetPropertyDataIds()
        analyzerNode.AddPropertyData(identifier, nodeData.GetPropertyData(identifier))
    Next identifier

    ' Check if the partially populated ContextNode is an ink leaf node.
    If nodeData.IsInkLeafNode Then
        ' Add the strokes to the context node.
        analyzerNode.SetStrokes(nodeData.Strokes)
    Else
        ' Add each child subnode as a partially populated ContextNode.
        Dim documentSubNode As TreeNode
        For Each documentSubNode In documentNode.Nodes
            ' Get the DocumentNode data for the 
            Dim subNodeData As DocumentNodeData = documentSubNode.Tag

            If analyzerNode.SubNodes.IndexOf(nodeData.Id) <> -1 Then
                analyzerNode.CreatePartiallyPopulatedSubNode( _
                    subNodeData.Type, subNodeData.Id, subNodeData.Location)
            End If

        Next documentSubNode
    End If

    ' Add links to the ContextNode.
    Me.AddLinksToAnalyzer(documentNode, analyzerNode, theInkAnalyzer)

    ' Update the partially populated flag.
    analyzerNode.PartiallyPopulated = False

    System.Diagnostics.Debug.Unindent()

End Sub 'IDocumentModel.PopulateNode
        void IDocumentModel.PopulateNode(
            Microsoft.Ink.ContextNode analyzerNode,
            Microsoft.Ink.InkAnalyzer theInkAnalyzer)
        {
            System.Diagnostics.Debug.WriteLine(string.Format(
                "IDocumentModel.PopulateNode: populate {0} {1}.",
                TreeViewDocumentModel.GetContextNodeTypeName(analyzerNode.Type),
                analyzerNode.Id));
            System.Diagnostics.Debug.Indent();

            // Get the document node associated with the analyzer node.
            TreeNode documentNode = this[analyzerNode.Id];
            if (null == documentNode)
            {
                throw new ApplicationException(
                    "The requested node does not exist in the document model.");
            }

            // Get the data associated with the node.
            DocumentNodeData nodeData = documentNode.Tag as DocumentNodeData;

            // Copy any application specific data associated with the node to the
            // partially populated ContextNode.
            foreach (Guid identifier in nodeData.GetPropertyDataIds())
            {
                analyzerNode.AddPropertyData(
                    identifier, nodeData.GetPropertyData(identifier));
            }

            // Check if the partially populated ContextNode is an ink leaf node.
            if (nodeData.IsInkLeafNode)
            {
                // Add the strokes to the context node.
                analyzerNode.SetStrokes(nodeData.Strokes);
            }
            else
            {
                // Add each child subnode as a partially populated ContextNode.
                foreach (TreeNode documentSubNode in documentNode.Nodes)
                {
                    // Get the DocumentNode data for the 
                    DocumentNodeData subNodeData = documentSubNode.Tag as DocumentNodeData;

                    if (analyzerNode.SubNodes.IndexOf(nodeData.Id) != -1)
                    {
                        analyzerNode.CreatePartiallyPopulatedSubNode(
                            subNodeData.Type, subNodeData.Id, subNodeData.Location);
                    }
                }
            }

            // Add links to the ContextNode.
            this.AddLinksToAnalyzer(documentNode, analyzerNode, theInkAnalyzer);

            // Update the partially populated flag.
            analyzerNode.PartiallyPopulated = false;

            System.Diagnostics.Debug.Unindent();
        }

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

Vea también

Referencia

ContextNode (Clase)

ContextNode (Miembros)

Microsoft.Ink (Espacio de nombres)