Share via


AnalysisAlternate.AlternateNodes Property

Gets the ContextNode objects that are associated with this alternate.

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

Syntax

'Declaration
Public ReadOnly Property AlternateNodes As ContextNodeCollection
'Usage
Dim instance As AnalysisAlternate 
Dim value As ContextNodeCollection 

value = instance.AlternateNodes
public ContextNodeCollection AlternateNodes { get; }
public:
property ContextNodeCollection^ AlternateNodes {
    ContextNodeCollection^ get ();
}
public function get AlternateNodes () : ContextNodeCollection

Property Value

Type: Microsoft.Ink.ContextNodeCollection
The ContextNode objects that are associated with this alternate.

Remarks

Because they correspond to alternates, these ContextNode objects are not descendants of the RootNode of the InkAnalyzer unless they are the top alternate, which is the first element in an AnalysisAlternateCollection.

The returned nodes are the leaf nodes corresponding to the alternate.

AlternateNodes always returns a collection of the leaf nodes, that is, when called on a LineNode the collection will contain InkWordNodes, not the LineNodes.

Note

The alternate nodes in this version have a ParentNode property equal to nulla null reference (Nothing in Visual Basic).

Examples

This example checks to see if an AnalysisAlternate, selectedAlternate, has the same segmentation as the top alternate in an AnalysisAlternateCollection, currentAlternates. Segmentation refers to how the strokes are broken up into ContextNode objects.

Dim hasSameSegmentationAsTop As Boolean = True 
If currentAlternates.Count > 0 Then 
    Dim topAlternate As AnalysisAlternate = currentAlternates(0)
    ' First check if selected alternate is the top alternate 
    If selectedAlternate.Equals(topAlternate) Then
        hasSameSegmentationAsTop = True 
    Else 
        ' Check to see if they have the same strokes 
        If topAlternate.AlternateNodes.Count <> selectedAlternate.AlternateNodes.Count Then
            hasSameSegmentationAsTop = False 
        Else 
            ' Check that each node matches the alternates 
            Dim index As Integer 
            For index = 0 To topAlternate.AlternateNodes.Count - 1

                If topAlternate.AlternateNodes(index).Strokes.Count <> _
                    selectedAlternate.AlternateNodes(index).Strokes.Count Then
                    hasSameSegmentationAsTop = False 
                    Exit For 
                End If 

                Dim topStroke As Stroke
                For Each topStroke In topAlternate.AlternateNodes(index).Strokes
                    If (Not selectedAlternate.AlternateNodes(index).Strokes.Contains(topStroke)) Then
                        hasSameSegmentationAsTop = False 
                        Exit For 
                    End If 
                Next topStroke

                If Not hasSameSegmentationAsTop Then 
                    Exit For 
                End If 

            Next index
        End If 
    End If 
End If
              bool hasSameSegmentationAsTop = true;
                if (currentAlternates.Count > 0)
                {
                    AnalysisAlternate topAlternate = currentAlternates[0];
                    // First check if selected alternate is the top alternate 
                    if (selectedAlternate == topAlternate)
                    {
                        hasSameSegmentationAsTop = true;
                    }
                    else
                    {
                        // Check to see if they have the same strokes 
                        if (topAlternate.AlternateNodes.Count != selectedAlternate.AlternateNodes.Count)
                        {
                            hasSameSegmentationAsTop = false;
                        }
                        else
                        {
                            // Check that each node matches the alternates 
                            for (int i = 0; 
                                (i < topAlternate.AlternateNodes.Count) && hasSameSegmentationAsTop; i++)
                            {
                                if (topAlternate.AlternateNodes[i].Strokes.Count !=
                                      selectedAlternate.AlternateNodes[i].Strokes.Count)
                                {
                                    hasSameSegmentationAsTop = false;
                                    break;
                                }

                                foreach (Stroke stroke in topAlternate.AlternateNodes[i].Strokes)
                                {
                                    if (!selectedAlternate.AlternateNodes[i].Strokes.Contains(stroke))
                                    {
                                        hasSameSegmentationAsTop = false;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }

Platforms

Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

AnalysisAlternate Class

AnalysisAlternate Members

Microsoft.Ink Namespace