Freigeben über


ContextNode.PartiallyPopulated-Eigenschaft

Ruft einen Wert ab, oder legt einen Wert fest, der angibt, ob ein ContextNode-Objekt teilweise oder vollständig aufgefüllt ist.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink.Analysis (in Microsoft.Ink.Analysis.dll)

Syntax

'Declaration
Public Property PartiallyPopulated As Boolean
'Usage
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)

Eigenschaftenwert

Typ: System.Boolean
true , wenn das ContextNode-Objekt während des Datenproxyprozesses keine vollständigen Daten enthält; false, wenn alle Daten hinzugefügt wurden.

Hinweise

Verwenden Sie diese Eigenschaft für Datenproxys, wenn ContextNode-Objekte in der Kontextknotenstruktur erstellt werden, bevor alle relevanten Informationen darüber zur Verfügung stehen. Diese Eigenschaft gibt an, ob eine vollständige Auffüllung mit Daten erfolgt ist.

Wenn Sie diesen Wert auf true festlegen, muss er einen nicht leeren Location-Wert haben, wenn ContextNode kein RootNode, CustomRecognizer, AnalysisHint oder unbekannter ContextNode ist.

Wenn ein Strich gelöscht wird, der Strich nicht im Strichcache gefunden wird und ein Teil der Struktur als PartiallyPopulated markiert ist, wird die Anwendung nicht durch Ereignisse davon benachrichtigt, dass sie diesen Strich aus dem InkAnalyzer entfernen soll. Die Anwendung ist dafür zuständig, den Strich zu entfernen.

Beim Virtualisieren Ihrer Dokumentstruktur müssen Sie sicherstellen, dass Sie den PropertyGuidsForContextNodes.RotatedBoundingBox-Wert (mithilfe von ContextNode.AddPropertyValue) für alle ContextNode-Objekte festlegen. Die RotatedBoundingBox-Eigenschaft wird vom InkAnalyzer berechnet und sollte standardmäßig auf allen ContextNodes für Schreibvorgänge vorhanden sein. Wenn die Anwendung die Analyseergebnisse jedoch durch Festlegen der PartiallyPopulated-Eigenschaft virtualisiert, müssen Sie beim Behandeln des PopulateContextNode-Ereignisses sicherstellen, dass die RotatedBoundingBox-Eigenschaft aufgefüllt wird. Wenn die RotatedBoundingBox-Eigenschaft nicht festgelegt wird, kann dies dazu führen, dass potenziell mehr Dokumentdaten beim aktuellen Analysevorgang verwendet werden.

Beispiele

Das folgende Beispiel zeigt eine Methode mit dem Namen PopulateNode aus Beispielcode, der eine System.Windows.Forms.TreeView als Dokumentmodell verwendet, um zu zeigen, wie ein Datenproxy zum Speichern oder Laden der Kontextknotenstruktur für einen InkAnalyzer verwendet werden kann. Die DocumentNodeData-Klasse speichert die ContextNode-Daten im Dokumentmodell, wenn die Tag-Eigenschaft jedes TreeNode-Objekts auf ein DocumentNodeData-Objekt festgelegt ist.

Die PopulateNode-Methode verwendet ein ContextNode-Objekt und ein InkAnalyzer-Objekt, um den Kontextknoten durch Hinzufügen von Strichen, Eigenschaftsdaten, Anmerkungstypen, untergeordneten Knoten und Links vollständig aufzufüllen. Die Daten stammen aus dem DocumentNodeData-Objekt, das aus dem entsprechenden TreeNode abgerufen wird.

  • this[analyzerNode.Id] ist ein Indexer für die Dokumentmodellklasse, die einem TreeNode eine Guid zuordnet.

  • AddLinksToAnalyer ist eine Methode für die Dokumentmodellklasse, die dem ContextNode Links hinzufügt.

Nachdem der Knoten vollständig aufgefüllt wurde, wird die PartiallyPopulated-Eigenschaft auf false festgelegt.

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();
        }

Plattformen

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Versionsinformationen

.NET Framework

Unterstützt in: 3.0

Siehe auch

Referenz

ContextNode-Klasse

ContextNode-Member

Microsoft.Ink-Namespace