Freigeben über


ContextNode.PartiallyPopulated-Eigenschaft

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

Namespace:  System.Windows.Ink
Assembly:  IAWinFX (in IAWinFX.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 der ContextNode während des Datenproxyprozesses partielle Daten enthält; false,wenn alle Daten hinzugefügt wurden.

Hinweise

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

Beispiele

Das folgende Beispiel ist eine Methode mit dem Namen PopulateNode, aus dem Beispielcode, der einen [System.Windows.Controls.TreeView] als Dokumentmodell verwendet, um zu zeigen, wie Datenproxys verwendet werden können, um die Kontextknotenstruktur für einen InkAnalyzer zu speichern oder zu laden. Die DocumentNodeData-Klasse speichert die ContextNode-Daten im Dokumentmodell, wenn die [System.Windows.FrameworkElement.Tag]-Eigenschaft jedes TreeViewItem-Objekts auf ein DocumentNodeData-Objekt festgelegt wird.

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

  • this[analyzerNode.Id] ist ein Indexer auf die Dokumentmodellklasse, die einen Guid einem TreeViewItem zuordnet.

  • AddLinksToAnalyer ist eine Methode für die Dokumentmodellklasse, die Verknüpfungen zum ContextNode hinzufügt.

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

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

    System.Diagnostics.Debug.WriteLine(String.Format("IDocumentModel.PopulateNode: populate {0} {1}.", analyzerNode.ToString(), GetRecognizedString(analyzerNode)))
    System.Diagnostics.Debug.Indent()

    ' Get the document node associated with the analyzer node.
    Dim documentNode As TreeViewItem = 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.
    For Each identifier As Guid 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 TreeViewItem
        For Each documentSubNode In  documentNode.Items
            ' 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(
            ContextNode analyzerNode,
            InkAnalyzer theInkAnalyzer)
        {
            System.Diagnostics.Debug.WriteLine(string.Format(
                "IDocumentModel.PopulateNode: populate {0} {1}.",
                analyzerNode.ToString(), GetRecognizedString(analyzerNode)));
            System.Diagnostics.Debug.Indent();

            // Get the document node associated with the analyzer node.
            TreeViewItem 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 (TreeViewItem documentSubNode in documentNode.Items)
                {
                    // 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

System.Windows.Ink-Namespace