Condividi tramite


Proprietà ContextNodeBase.PartiallyPopulated

Aggiornamento: novembre 2007

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

Spazio dei nomi:  System.Windows.Ink.AnalysisCore
Assembly:  IACore (in IACore.dll)

Sintassi

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

Valore proprietà

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

Note

Utilizzare questo metodo per il proxy di dati quando gli oggetti ContextNodeBase vengono creati nella struttura ad albero dei nodi di contesto prima che siano disponibili tutte le informazioni. Questa proprietà indica se è stata eseguita la compilazione completa di dati.

Quando si imposta questo valore su true, se ContextNodeBase non è un oggetto RootNode, CustomRecognizer, AnalysisHint o ContextNode sconosciuto deve presentare un valore Location non vuoto.

Se viene eliminato un tratto e tale tratto non è contenuto nella cache dei tratti e parte della struttura ad albero è contrassegnata come PartiallyPopulated, l'applicazione riceve eventi di notifica per segnalare che il tratto deve essere rimosso da InkAnalyzer. L'applicazione è responsabile della rimozione del tratto.

Quando si esegue la virtualizzazione della struttura ad albero del documento, assicurarsi di impostare il valore PropertyGuidsForContextNodes.RotatedBoundingBox (utilizzando ContextNode.AddPropertyValue) in tutti gli oggetti ContextNodeBase. La proprietà RotatedBoundingBox viene calcolata da InkAnalyzer e per impostazione predefinita deve trovarsi su tutti gli oggetti ContextNodes di scrittura. Se tuttavia l'applicazione esegue 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 un aumento della quantità di dati del documento utilizzati nell'operazione di analisi corrente

Esempi

L'esempio seguente è un metodo denominato PopulateNode, tratto dal codice di esempio che utilizza System.Windows.Forms.TreeView come modello di documento per illustrare l'utilizzo del proxy di dati per l'archiviazione e il caricamento di una struttura ad albero dei nodi di contesto per InkAnalyzerBase. La classe DocumentNodeData archivia i dati ContextNodeBase nel modello di documento quando la proprietà Tag di ogni oggetto TreeNode è impostata su un oggetto DocumentNodeData.

Il metodo PopulateNode utilizza un oggetto ContextNodeBase e un oggetto InkAnalyzerBase per compilare completamente il nodo di contesto aggiungendo tratti, dati di 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 di documento che esegue il mapping di un Guid a un oggetto TreeNode.

  • AddLinksToAnalyer è un metodo nella classe del modello di documento che aggiunge collegamenti a ContextNodeBase.

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

.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

ContextNodeBase Classe

Membri ContextNodeBase

Spazio dei nomi System.Windows.Ink.AnalysisCore

ContextNodeBase.CreatePartiallyPopulatedSubNode