Übersicht über AnmerkungenAnnotations Overview

Das Schreiben von Notizen oder Kommentare auf Papierdokumenten ist solch eine verbreitete Aktivität, dass wir sie als selbstverständlich erachten.Writing notes or comments on paper documents is such a commonplace activity that we almost take it for granted. Diese Notizen oder Kommentare sind „Anmerkungen“, die wir einem Dokument hinzufügen, um Informationen zu kennzeichnen oder um interessante Elemente für einen späteren Zeitpunkt zu markieren.These notes or comments are "annotations" that we add to a document to flag information or to highlight items of interest for later reference. Obwohl das Schreiben von Notizen auf gedruckte Dokumente einfach und üblich ist, ist die Möglichkeit, persönliche Kommentare auf elektronischen Dokumenten hinzuzufügen, in der Regel nur sehr eingeschränkt, falls diese Möglichkeit überhaupt verfügbar ist.Although writing notes on printed documents is easy and commonplace, the ability to add personal comments to electronic documents is typically very limited, if available at all.

In diesem Thema werden mehrere allgemeine Typen von Anmerkungen behandelt, insbesondere Kurznotizen und Markierungen, und es wird dargestellt, wie das Microsoft Annotations FrameworkMicrosoft Annotations Framework diese Typen von Anmerkungen und Anwendungen über die Steuerelemente für das Anzeigen des Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)-Dokuments vereinfacht.This topic reviews several common types of annotations, specifically sticky notes and highlights, and illustrates how the Microsoft Annotations FrameworkMicrosoft Annotations Framework facilitates these types of annotations in applications through the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) document viewing controls. WPFWPFDokument anzeigen-Steuerelementen, die Anmerkungen zu unterstützen, gehören FlowDocumentReader und FlowDocumentScrollViewersowie Steuerelemente abgeleitet DocumentViewerBase wie z. B. DocumentViewer und FlowDocumentPageViewer. document viewing controls that support annotations include FlowDocumentReader and FlowDocumentScrollViewer, as well as controls derived from DocumentViewerBase such as DocumentViewer and FlowDocumentPageViewer.

KurznotizenSticky Notes

Eine normale Kurznotiz enthält Informationen, die auf ein kleines Stück farbiges Papier geschrieben werden, das dann auf ein Dokument „geklebt“ wird.A typical sticky note contains information written on a small piece of colored paper that is then "stuck" to a document. Digitale Kurznotizen bieten ähnliche Funktionen für elektronische Dokumente, jedoch mit der zusätzlichen Flexibilität, viele andere Inhaltstypen wie eingegebenen Text, handschriftliche Notizen (z.B. Tablet PCTablet PC-Freihandeingabestriche), oder Weblinks einzuschließen.Digital sticky notes provide similar functionality for electronic documents, but with the added flexibility to include many other types of content such as typed text, handwritten notes (for example, Tablet PCTablet PC "ink" strokes), or Web links.

Die folgende Abbildung zeigt einige Beispiele von Hervorhebungen, Kurznotizen und Freihandnotizanmerkungen.The following illustration shows some examples of highlight, text sticky note, and ink sticky note annotations.

Textmarker-, Text- und FreihandnotizanmerkungenHighlight, text and ink sticky note annotations.

Das folgende Beispiel zeigt die Methode, die Sie zum Aktivieren der Unterstützung von Kommentaren in der Anwendung verwenden können.The following example shows the method that you can use to enable annotation support in your application.

// ------------------------ StartAnnotations --------------------------
/// <summary>
///   Enables annotations and displays all that are viewable.</summary>
private void StartAnnotations()
{
    // If there is no AnnotationService yet, create one.
    if (_annotService == null)
        // docViewer is a document viewing control named in Window1.xaml.
        _annotService = new AnnotationService(docViewer);

    // If the AnnotationService is currently enabled, disable it.
    if (_annotService.IsEnabled == true)
        _annotService.Disable();

    // Open a stream to the file for storing annotations.
    _annotStream = new FileStream(
        _annotStorePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);

    // Create an AnnotationStore using the file stream.
    _annotStore = new XmlStreamStore(_annotStream);

    // Enable the AnnotationService using the new store.
    _annotService.Enable(_annotStore);
}// end:StartAnnotations()
' ------------------------ StartAnnotations --------------------------
''' <summary>
'''   Enables annotations and displays all that are viewable.</summary>
Private Sub StartAnnotations()
	' If there is no AnnotationService yet, create one.
	If _annotService Is Nothing Then
		' docViewer is a document viewing control named in Window1.xaml.
		_annotService = New AnnotationService(docViewer)
	End If

	' If the AnnotationService is currently enabled, disable it.
	If _annotService.IsEnabled = True Then
		_annotService.Disable()
	End If

	' Open a stream to the file for storing annotations.
	_annotStream = New FileStream(_annotStorePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)

	' Create an AnnotationStore using the file stream.
	_annotStore = New XmlStreamStore(_annotStream)

	' Enable the AnnotationService using the new store.
	_annotService.Enable(_annotStore)
End Sub ' end:StartAnnotations()

MarkierungenHighlights

Personen, die kreative Methoden verwenden, können Aufmerksamkeit auf Elemente ziehen, wenn Sie ein Papierdokument beschreiben, z.B. Wörter in einem Satz unterstreichen, markieren, einkreisen oder Markierungen oder Notationen am Rand hinzufügen.People use creative methods to draw attention to items of interest when they mark up a paper document, such as underlining, highlighting, circling words in a sentence, or drawing marks or notations in the margin. Das markieren von Anmerkungen in Microsoft Annotations FrameworkMicrosoft Annotations Framework bietet eine ähnliche Funktion zum Markieren von Informationen, die in Steuerelementen für das Anzeigen des WPFWPF-Dokuments angezeigt wird.Highlight annotations in Microsoft Annotations FrameworkMicrosoft Annotations Framework provide a similar feature for marking up information displayed in WPFWPF document viewing controls.

In der folgenden Abbildung ist ein Beispiel einer markierten Anmerkung dargestellt:The following illustration shows an example of a highlight annotation.

Anmerkung hervorhebenHighlight Annotation

Benutzer in der Regel erstellen Sie Anmerkungen, indem zunächst einige Text oder ein zu berücksichtigendes Element auszuwählen, und klicken Sie dann mit der rechten Maustaste, um anzuzeigen eine ContextMenu Anmerkung-Optionen.Users typically create annotations by first selecting some text or an item of interest, and then right-clicking to display a ContextMenu of annotation options. Das folgende Beispiel zeigt die Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) können Sie deklarieren eine ContextMenu mit weitergeleiteten Befehlen, die die Benutzer zugreifen können, zum Erstellen und Verwalten von Anmerkungen.The following example shows the Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) you can use to declare a ContextMenu with routed commands that users can access to create and manage annotations.

<DocumentViewer.ContextMenu>
  <ContextMenu>
    <MenuItem Command="ApplicationCommands.Copy" />
    <Separator />
    <!-- Add a Highlight annotation to a user selection. -->
    <MenuItem Command="ann:AnnotationService.CreateHighlightCommand"
              Header="Add Highlight" />
    <!-- Add a Text Note annotation to a user selection. -->
    <MenuItem Command="ann:AnnotationService.CreateTextStickyNoteCommand"
              Header="Add Text Note" />
    <!-- Add an Ink Note annotation to a user selection. -->
    <MenuItem Command="ann:AnnotationService.CreateInkStickyNoteCommand"
              Header="Add Ink Note" />
    <Separator />
    <!-- Remove Highlights from a user selection. -->
    <MenuItem Command="ann:AnnotationService.ClearHighlightsCommand"
              Header="Remove Highlights" />
    <!-- Remove Text Notes and Ink Notes from a user selection. -->
    <MenuItem Command="ann:AnnotationService.DeleteStickyNotesCommand"
              Header="Remove Notes" />
    <!-- Remove Highlights, Text Notes, Ink Notes from a selection. -->
    <MenuItem Command="ann:AnnotationService.DeleteAnnotationsCommand"
              Header="Remove Highlights &amp; Notes" />
  </ContextMenu>
</DocumentViewer.ContextMenu>

Verankerung von DatenData Anchoring

Durch Annotations FrameworkAnnotations Framework werden Anmerkungen an Daten gebunden, die der Benutzer auswählt, und nicht nur an eine Position auf der dargestellten Anzeige.The Annotations FrameworkAnnotations Framework binds annotations to the data that the user selects, not just to a position on the display view. Deshalb bleibt die Anmerkung bei der Datenauswahl, an die sie gebunden ist, wenn der Benutzer das Anzeigefenster nach oben oder unten verschiebt oder die Größe ändert, wenn sich die Dokumentansicht ändert.Therefore, if the document view changes, such as when the user scrolls or resizes the display window, the annotation stays with the data selection to which it is bound. Die folgende Abbildung zeigt z.B. eine Anmerkung, die der Benutzer für einen Textausschnitt erstellt hat.For example, the following graphic illustrates an annotation that the user has made on a text selection. Wenn sich die Dokumentansicht ändert (durch Bildlauf, Größenänderung, Skalierung usw.), wird die hervorgehobene Anmerkung mit den ausgewählten Daten verschoben.When the document view changes (scrolls, resizes, scales, or otherwise moves), the highlight annotation moves with the original data selection.

Anmerkungsdaten-VerankerungAnnotation Data Anchoring

Abgleichen von Anmerkung mit Objekten mit AnmerkungenMatching Annotations with Annotated Objects

Sie können Anmerkungen den entsprechenden kommentierten Objekten zuordnen.You can match annotations with the corresponding annotated objects. Betrachten Sie beispielsweise eine einfache Dokumentleseranwendung, die über einen Kommentarbereich verfügt.For example, consider a simple document reader application that has a comments pane. Der Kommentarbereich ist möglicherweise ein Listenfeld, das den Text aus einer Liste von Anmerkungen anzeigt, die mit einem Dokument verankert sind.The comments pane might be a list box that displays the text from a list of annotations that are anchored to a document. Wenn der Benutzer ein Element im Listenfeld auswählt, zeigt die Anwendung den Abschnitt im Dokument, mit dem das entsprechende Anmerkungsobjekt verankert ist.If the user selects an item in the list box, then the application brings into view the paragraph in the document that the corresponding annotation object is anchored to.

Im folgenden Beispiel wird veranschaulicht, wie der Ereignishandler eines solchen Listenfelds, das als Kommentarbereich dient, implementiert wird.The following example demonstrates how to implement the event handler of such a list box that serves as the comments pane.

void annotationsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

    Annotation comment = (sender as ListBox).SelectedItem as Annotation;
    if (comment != null)
    {
        // IAnchorInfo info;
        // service is an AnnotationService object
        // comment is an Annotation object
        info = AnnotationHelper.GetAnchorInfo(this.service, comment);
        TextAnchor resolvedAnchor = info.ResolvedAnchor as TextAnchor;
        TextPointer textPointer = (TextPointer)resolvedAnchor.BoundingStart;
        textPointer.Paragraph.BringIntoView();
    }
}
Private Sub annotationsListBox_SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)

	Dim comment As Annotation = TryCast((TryCast(sender, ListBox)).SelectedItem, Annotation)
	If comment IsNot Nothing Then
              ' service is an AnnotationService object
		' comment is an Annotation object
		info = AnnotationHelper.GetAnchorInfo(Me.service, comment)
		Dim resolvedAnchor As TextAnchor = TryCast(info.ResolvedAnchor, TextAnchor)
		Dim textPointer As TextPointer = CType(resolvedAnchor.BoundingStart, TextPointer)
		textPointer.Paragraph.BringIntoView()
	End If
End Sub

Ein weiteres Beispielszenario umfasst die Anwendungen, die den Austausch von Anmerkungen und Haftnotizen zwischen Lesern von Dokument per e-Mail zu ermöglichen.Another example scenario involves applications that enable the exchange of annotations and sticky notes between document readers through email. Diese Funktion ermöglicht diesen Programmen, den Leser zu der Seite zu navigieren, die die Anmerkung enthält, die gerade ausgetauscht wird.This feature enables these applications to navigate the reader to the page that contains the annotation that is being exchanged.

Siehe auchSee Also

DocumentViewerBase
DocumentViewer
FlowDocumentPageViewer
FlowDocumentScrollViewer
FlowDocumentReader
IAnchorInfo
Annotations-SchemaAnnotations Schema
Übersicht über ContextMenuContextMenu Overview
BefehlsübersichtCommanding Overview
Übersicht über FlussdokumenteFlow Document Overview
How to: Add a Command to a MenuItem (Vorgehensweise: Hinzufügen eines Befehls zu einem MenuItem)How to: Add a Command to a MenuItem