AnalysisAlternate.AlternateNodes Property
Gets the ContextNode objects that are associated with the current AnalysisAlternate.
Namespace: System.Windows.Ink
Assembly: IAWinFX (in IAWinFX.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: System.Windows.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 a AnalysisAlternateCollection.
AlternateNodes always return a collection of leaf nodes. For example, if the AnalysisAlternate is a LineNode, AlternateNodes returns a collection of InkWordNode objects, not LineNode objects.
Examples
This example checks to see if a 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 = 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 i As Integer
For i = 0 To topAlternate.AlternateNodes.Count - 1
If topAlternate.AlternateNodes(i).Strokes.Count <> _
selectedAlternate.AlternateNodes(i).Strokes.Count Then
hasSameSegmentationAsTop = False
Exit For
End If
Dim stroke As Stroke
For Each stroke In topAlternate.AlternateNodes(i).Strokes
If Not selectedAlternate.AlternateNodes(i).Strokes.Contains(stroke) Then
hasSameSegmentationAsTop = False
Exit For
End If
Next stroke
Next i
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 XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003
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