Compartir a través de


ContextNodeBase.PartiallyPopulated (Propiedad)

Actualización: noviembre 2007

Obtiene o establece un valor que indica si un objeto ContextNodeBase está parcial o totalmente lleno.

Espacio de nombres:  System.Windows.Ink.AnalysisCore
Ensamblado:  IACore (en IACore.dll)

Sintaxis

'Declaración
Public Property PartiallyPopulated As Boolean
'Uso
Dim instance As ContextNodeBase
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 ContextNodeBase no contiene los datos completos durante el proceso del proxy de datos; es false si se han agregado todos los datos.

Comentarios

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

Al establecer este valor a verdadero, si ContextNodeBase 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 (con ContextNode.AddPropertyValue) en todos los objetos ContextNodeBase. 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 mediante el establecimiento de la propiedad PartiallyPopulated, asegúrese de rellenar la propiedad RotatedBoundingBox cuando administre el evento PopulateContextNode. 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 InkAnalyzerBase. La clase DocumentNodeData almacena los datos del objeto ContextNodeBase 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 ContextNodeBase y InkAnalyzerBase 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 ContextNodeBase.

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, Windows XP SP2, Windows Server 2003

.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

ContextNodeBase (Clase)

ContextNodeBase (Miembros)

System.Windows.Ink.AnalysisCore (Espacio de nombres)

ContextNodeBase.CreatePartiallyPopulatedSubNode