Condividi tramite


Proprietà ContextNode.PartiallyPopulated

Aggiornamento: novembre 2007

Ottiene o imposta un valore che indica se un oggetto ContextNode è parzialmente o completamente compilato.

Spazio dei nomi:  Microsoft.Ink
Assembly:  Microsoft.Ink.Analysis (in Microsoft.Ink.Analysis.dll)

Sintassi

'Dichiarazione
Public Property PartiallyPopulated As Boolean
'Utilizzo
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)

Valore proprietà

Tipo: System.Boolean
true se l'oggetto ContextNode non contiene dati completi durante il processo del proxy di dati; false se sono stati aggiunti tutti i dati.

Note

Utilizzare questa proprietà per il proxy di dati quando gli oggetti ContextNode vengono creati nella struttura ad albero del nodo di contesto prima che siano disponibili tutte le informazioni a riguardo. Questa proprietà indica se si è verificata la compilazione completa di dati.

Quando questo valore viene impostato su true, se ContextNode non è RootNode, CustomRecognizer, AnalysisHint o ContextNode sconosciuto, deve disporre di un valore Location non vuoto.

Se un tratto viene eliminato e non viene trovato nella cache del tratto e parte della struttura ad albero viene contrassegnata come PartiallyPopulated, l'applicazione non viene notificata tramite gli eventi che deve rimuovere il tratto da InkAnalyzer. L'applicazione è responsabile della rimozione del tratto.

Quando viene effettuata la virtualizzazione della struttura del documento, assicurarsi di impostare il valore PropertyGuidsForContextNodes.RotatedBoundingBox (utilizzando ContextNode.AddPropertyValue) in tutti gli oggetti ContextNode. La proprietà RotatedBoundingBox viene calcolata da InkAnalyzer e per impostazione predefinita deve essere in tutti i ContextNodes di scrittura. Tuttavia, se l'applicazione effettua la virtualizzazione dei risultati dell'analisi impostando la proprietà PartiallyPopulated, assicurarsi di compilare la proprietà RotatedBoundingBox durante la gestione dell'evento PopulateContextNode. La mancata impostazione della proprietà RotatedBoundingBox potrebbe determinare l'utilizzo di più dati del documento nell'operazione di analisi corrente

Esempi

Nell'esempio seguente viene utilizzato un metodo chiamato PopulateNode, dal codice di esempio che utilizza un System.Windows.Forms.TreeView come modello documento per mostrare come il proxy di dati può essere utilizzato per archiviare e caricare una struttura ad albero del nodo di contesto per un InkAnalyzer. La classe DocumentNodeData archivia i dati ContextNode nel modello documento quando la proprietà Tag di ogni oggetto TreeNode è impostata su un oggetto DocumentNodeData.

Il metodo PopulateNode utilizza un oggetto ContextNode e un oggetto InkAnalyzer per compilare completamente il nodo di contesto aggiungendo tratti, dati delle proprietà, tipo di annotazione, nodi figlio e collegamenti. I dati provengono dall'oggetto DocumentNodeData ottenuto dall'oggetto TreeNode corrispondente.

  • this[analyzerNode.Id] è un indicizzatore nella classe del modello documento che esegue il mapping di un Guid a un TreeNode.

  • AddLinksToAnalyer è un metodo nella classe del modello documento che aggiunge collegamenti al ContextNode.

Una volta compilato completamente il nodo, la proprietà PartiallyPopulated viene impostata su 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();
        }

Piattaforme

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Framework

Supportato in: 3.0

Vedere anche

Riferimenti

ContextNode Classe

Membri ContextNode

Spazio dei nomi Microsoft.Ink