ContextNode.CreatePartiallyPopulatedSubNode-Methode
Erstellt ein untergeordnetes ContextNode-Objekt, das nur die folgenden Informationen enthält: Type, Id und Location.
Namespace: System.Windows.Ink
Assembly: IAWinFX (in IAWinFX.dll)
Syntax
'Declaration
Public Function CreatePartiallyPopulatedSubNode ( _
type As Guid, _
nodeId As Guid, _
nodeLocation As AnalysisRegion _
) As ContextNode
'Usage
Dim instance As ContextNode
Dim type As Guid
Dim nodeId As Guid
Dim nodeLocation As AnalysisRegion
Dim returnValue As ContextNode
returnValue = instance.CreatePartiallyPopulatedSubNode(type, _
nodeId, nodeLocation)
public ContextNode CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion nodeLocation
)
public:
ContextNode^ CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion^ nodeLocation
)
public ContextNode CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion nodeLocation
)
public function CreatePartiallyPopulatedSubNode(
type : Guid,
nodeId : Guid,
nodeLocation : AnalysisRegion
) : ContextNode
Parameter
- type
Typ: System.Guid
Der Typ von ContextNode-Objekt, das erstellt wird.
- nodeId
Typ: System.Guid
Der Bezeichner für den neuen Knoten.
- nodeLocation
Typ: System.Windows.Ink.AnalysisRegion
Die Position des neuen Knotens.
Rückgabewert
Typ: System.Windows.Ink.ContextNode
Ein neues ContextNode-Objekt, das nur Informationen überType, Id und Location enthält. Dieser neue Knoten ist dem ContextNode untergeordnet.
Hinweise
Diese Methode wird für ein Datenproxy verwendet, um ein ContextNode-Objekt in der Kontextknotenstruktur zu erstellen, bevor alle relevanten Informationen zur Verfügung stehen. Die anderen Informationen können später hinzugefügt werden.
Beispiele
Das folgende Beispiel ist eine Methode mit dem Namen CreatePartiallyPopulatedNode, die eine [System.Windows.Controls.TreeView] als Dokumentmodell verwendet, um anzuzeigen, wie ein Datenproxy zum Speichern und Laden einer Kontextknotenstruktur für einen InkAnalyzer verwendet werden kann. Die DocumentNodeData-Klasse speichert ContextNode Daten im Dokumentmodell, indem sie die [System.Windows.FrameworkElement.Tag]-Eigenschaft jedes TreeViewItem-Objekts auf ein DocumentNodeData-Objekt festlegt. Die CreatePartiallyPopulatedNode-Methode verwendet ein TreeViewItem-Objekt und ein InkAnalyzer-Objekt, um die teilweise aufgefüllten Knoten in der InkAnalyzer-Kontextknotenstruktur zu erstellen, die mit dem TreeViewItem im Dokumentmodell übereinstimmen. In diesem Beispiel werden alle Knoten als teilweise aufgefüllt erstellt. Dann werden sie in eine Warteschlange von Knoten platziert, die zu einem späteren Zeitpunkt komplett mit den Knotendaten aufgefüllt wird.
Die Methode ruft die Knotendaten von der [System.Windows.FrameworkElement.Tag]-Eigenschaft des TreeViewItem-Objekts, das übergeben wird, ab. Die Methode verwendet dann den Id, um zu sicherzustellen, dass der Knoten aktuell nicht Teil der Kontextknotenstruktur ist. Sie verwendet die Strukturansicht des übergeordneten Knotens, um den entsprechenden übergeordneten Knoten in InkAnalyzer zu finden. Wenn der übergeordnete Knoten noch nicht in der Kontextknotenstruktur vorhanden ist, wird er mithilfe der Rekursion hinzugefügt. Wenn der übergeordnete Knoten in der Struktur enthalten ist, sollte er teilweise aufgefüllt sein; wenn er vollständig aufgefüllt wäre, würde er bereits alle untergeordneten Knoten enthalten, und es wäre nicht erforderlich, einen neuen hinzuzufügen. Daher überprüft die PartiallyPopulated-Eigenschaft, dass der übergeordnete Knoten teilweise aufgefüllt ist. In diesem Fall wird er der Warteschlange hinzugefügt, um zu einem späteren Zeitpunkt vollständig aufgefüllt zu werden. Wenn er nicht teilweise aufgefüllt ist, wird eine Ausnahme ausgelöst. Schließlich wird [M:System.Windows.Ink.ContextNode.CreatePartiallyPopulatedSubNode (System.Windows.Ink.ContextNodeType,System.Guid,System.Windows.Ink.AnalysisRegion)] auf dem übergeordneten Knoten aufgerufen, und der neu erstellte Knoten wird der Warteschlange mit Knoten hinzugefügt, die vollständig aufgefüllt werden. Das neue ContextNode-Objekt wird zurückgegeben. Weitere Informationen zu Datenproxys finden Sie unter Data Proxy with Ink Analysis.
Private Function CreatePartiallyPopulatedNode(ByVal documentNode As TreeViewItem, ByVal theInkAnalyzer As InkAnalyzer) As ContextNode
Dim nodeData As DocumentNodeData = documentNode.Tag '
' Check that the node does not already exist in the InkAnalyzer.
If Nothing <> theInkAnalyzer.FindNode(nodeData.Id) Then
Throw New ApplicationException("The node already exists in the InkAnalyzer.")
End If
' Find the parent analyzer node.
Dim parentNode As TreeViewItem = documentNode.Parent '
If parentNode Is Nothing Then
Throw New Exception("parentNode is not a TreeViewItem")
End If
Dim parentNodeData As DocumentNodeData = parentNode.Tag
Dim analyzerParentNode As ContextNode = theInkAnalyzer.FindNode(parentNodeData.Id)
If Nothing = analyzerParentNode Then
' The parent analyzer node does not exist yet. Create one.
analyzerParentNode = Me.CreatePartiallyPopulatedNode(parentNode, theInkAnalyzer)
ElseIf analyzerParentNode.PartiallyPopulated Then
' The parent analyzer node exists and is partially populated. Add it
' to the stack of nodes to fully populate.
Me.QueueNodeToPopulate(analyzerParentNode)
Else
' The parent analyzer node exists and is fully populated. This
' should not happen.
Throw New ApplicationException("The parent analyzer node is fully populated.")
End If
' Create the partially populated node under its parent analyzer node.
Dim analyzerNode As ContextNode = analyzerParentNode.CreatePartiallyPopulatedSubNode(nodeData.Type, nodeData.Id, nodeData.Location)
' Add the new node to the stack of nodes to fully populate.
Me.QueueNodeToPopulate(analyzerNode)
Return analyzerNode
End Function 'CreatePartiallyPopulatedNode
private ContextNode CreatePartiallyPopulatedNode(
TreeViewItem documentNode, InkAnalyzer theInkAnalyzer)
{
DocumentNodeData nodeData = documentNode.Tag as DocumentNodeData;
// Check that the node does not already exist in the InkAnalyzer.
if (null != theInkAnalyzer.FindNode(nodeData.Id))
{
throw new ApplicationException(
"The node already exists in the InkAnalyzer.");
}
// Find the parent analyzer node.
TreeViewItem parentNode = documentNode.Parent as TreeViewItem;
if (parentNode == null)
{
throw new Exception("parentNode is not a TreeViewItem");
}
DocumentNodeData parentNodeData =
parentNode.Tag as DocumentNodeData;
ContextNode analyzerParentNode =
theInkAnalyzer.FindNode(parentNodeData.Id);
if (null == analyzerParentNode)
{
// The parent analyzer node does not exist yet. Create one.
analyzerParentNode =
this.CreatePartiallyPopulatedNode(
parentNode, theInkAnalyzer);
}
else if (analyzerParentNode.PartiallyPopulated)
{
// The parent analyzer node exists and is partially populated. Add it
// to the stack of nodes to fully populate.
this.QueueNodeToPopulate(analyzerParentNode);
}
else
{
// The parent analyzer node exists and is fully populated. This
// should not happen.
throw new ApplicationException(
"The parent analyzer node is fully populated.");
}
// Create the partially populated node under its parent analyzer node.
ContextNode analyzerNode =
analyzerParentNode.CreatePartiallyPopulatedSubNode(
nodeData.Type, nodeData.Id, nodeData.Location);
// Add the new node to the stack of nodes to fully populate.
this.QueueNodeToPopulate(analyzerNode);
return analyzerNode;
}
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