Partager via


ContextNode.PartiallyPopulated, propriété

Mise à jour : November 2007

Obtient ou définit une valeur qui indique si un objet ContextNode est rempli partiellement ou complètement.

Espace de noms :  Microsoft.Ink
Assembly :  Microsoft.Ink.Analysis (dans Microsoft.Ink.Analysis.dll)

Syntaxe

'Déclaration
Public Property PartiallyPopulated As Boolean
'Utilisation
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)

Valeur de propriété

Type : System.Boolean
true si l'objet ContextNode ne contient pas de données complètes au cours du traitement du proxy de données ; false si toutes les données ont été ajoutées.

Notes

Utilisez cette propriété pour le proxy de données lorsque des objets ContextNode sont créés dans l'arborescence des nœuds de contexte avant que toutes les informations associées soient disponibles. Cette propriété indique si le remplissage complet des données a été effectué.

Lorsque cette valeur est true, si ContextNode n'est pas un RootNode, un CustomRecognizer, un AnalysisHint ou un ContextNode inconnu, il doit avoir une valeur de propriété Location non vide.

Si un trait est supprimé, qu'il est introuvable dans le cache de traits et qu'une partie de l'arborescence est marquée comme PartiallyPopulated, l'application ne reçoit pas de notification via des événements lui indiquant qu'elle doit supprimer ce trait de l'InkAnalyzer. L'application est chargée de supprimer le trait.

Lorsque vous virtualisez votre arborescence de document, veillez à définir la valeur PropertyGuidsForContextNodes.RotatedBoundingBox (à l'aide de ContextNode.AddPropertyValue) sur tous les objets ContextNode. La propriété RotatedBoundingBox est calculée par l'InkAnalyzer et, par défaut, doit être sur tous les ContextNodes d'écriture. Toutefois, si votre application virtualise les résultats d'analyse en définissant la propriété PartiallyPopulated, assurez-vous de remplir la propriété RotatedBoundingBox lors de la gestion de l'événement PopulateContextNode. Si la propriété RotatedBoundingBox n'est pas définie, il est possible que plus de données de document soient utilisées dans l'analyse actuelle

Exemples

L'exemple suivant est une méthode nommée PopulateNode, issue d'un exemple de code qui utilise un System.Windows.Forms.TreeView (page pouvant être en anglais) en tant que modèle de document pour montrer comment utiliser le proxy de données afin de stocker et charger une arborescence des nœuds de contexte pour un InkAnalyzer. La classe DocumentNodeData stocke les données ContextNode dans le modèle de document lorsque la propriété Tag (page pouvant être en anglais) de chaque objet TreeNode (page pouvant être en anglais) a pour valeur un objet DocumentNodeData.

La méthode PopulateNode utilise un objet ContextNode et un objet InkAnalyzer pour remplir complètement le nœud de contexte en ajoutant des traits, des données de propriété, un type d'annotation, des nœuds enfants et des liens. Les données viennent de l'objet DocumentNodeData obtenu du TreeNode (page pouvant être en anglais) correspondant.

  • this[analyzerNode.Id] est un indexeur sur la classe de modèle de document qui mappe un Guid (page pouvant être en anglais) à un TreeNode (page pouvant être en anglais).

  • AddLinksToAnalyer est une méthode sur la classe de modèle de document qui ajoute des liens au ContextNode.

Lorsque le nœud est complètement rempli, la propriété PartiallyPopulated a la valeur 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();
        }

Plateformes

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Framework

Pris en charge dans : 3.0

Voir aussi

Référence

ContextNode, classe

Membres ContextNode

Microsoft.Ink, espace de noms