Freigeben über


Übersicht über Anmerkungen

Das Niederschreiben von Notizen und Kommentaren auf Papierdokumenten ist eine so häufige Tätigkeit, dass sie als selbstverständlich vorausgesetzt wird. Bei diesen Notizen und Kommentaren handelt es sich um "Anmerkungen", die Dokumenten zur Markierung von Informationen oder zur Kennzeichnung wichtiger Elemente hinzugefügt werden. Im Gegensatz zum Schreiben von Notizen auf gedruckte Dokumente ist das Hinzufügen von Notizen in elektronischen Dokumenten oft nur sehr eingeschränkt oder nicht möglich.

Dieses Thema bietet eine Übersicht über verschiedene häufig verwendete Anmerkungstypen, insbesondere Kurznotizen und Hervorhebungen, und zeigt, wie Microsoft Annotations Framework diese Anmerkungstypen in Anwendungen über die Windows Presentation Foundation (WPF)-Dokumentanzeigesteuerelemente ermöglicht. Zu den WPF-Dokumentanzeigesteuerelementen, die Anmerkungen unterstützen, gehören die Elemente FlowDocumentReader und FlowDocumentScrollViewer sowie von DocumentViewerBase abgeleitete Steuerelemente wie DocumentViewer und FlowDocumentPageViewer.

Dieses Thema enthält folgende Abschnitte.

  • Kurznotizen
  • Hervorhebungen
  • Verankerung mit Daten
  • Zuordnen von Anmerkungen zu Objekten
  • Verwandte Abschnitte

Kurznotizen

Eine typische Haftnotiz ist ein kleines Stück farbiges Papier mit Informationen, das auf ein Dokument geklebt werden kann. Digitale Kurznotizen bieten eine ähnliche Funktion für elektronische Dokumente, mit der zusätzlichen Flexibilität, viele andere Inhaltstypen zu verwenden, wie über die Tastatur eingegebenen Text, handschriftliche Notizen (z. B. Tablet PC-Freihandeingaben) und Weblinks.

Die folgende Abbildung zeigt einige Beispiele für Hervorhebungen, Kurznotizen mit Text und Kurznotizen mit Freihandeingabe.

Textmarker-, Text- und Freihandnotizanmerkungen

Das folgende Beispiel zeigt die Methode, mit der Sie die Unterstützung von Anmerkungen in Ihrer Anwendung aktivieren können.

        ' ------------------------ 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()
// ------------------------ 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()

Hervorhebungen

Auf Papierdokumenten sind Ihrer Kreativität bei der Markierung von Elementen keine Grenzen gesetzt: Sie können Informationen unterstreichen, mit einem Textmarker hervorheben, Wörter in einem Satz einkreisen, Zeichen und Notizen am Rand hinzufügen usw. Die Hervorhebungen in Microsoft Annotations Framework bieten eine ähnliche Funktion zur Markierung von Informationen in WPF-Dokumentanzeigesteuerelementen.

Die folgende Abbildung zeigt ein Beispiel für eine Hervorhebung.

Anmerkung hervorheben

In der Regel erstellen Benutzer Anmerkungen, indem sie zunächst einen Textbereich oder ein Element auswählen und dann mit der rechten Maustaste klicken, um ein ContextMenu mit Anmerkungsoptionen anzuzeigen. Das folgende Beispiel zeigt, wie Sie mit Extensible Application Markup Language (XAML) ein ContextMenu-Element mit Routingbefehlen deklarieren, auf die Benutzer zugreifen können, um Anmerkungen zu erstellen und zu verwalten.

<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 mit Daten

Annotations Framework bindet Anmerkungen an die vom Benutzer ausgewählten Daten, nicht nur an die Position in der Anzeige. Wenn der Benutzer die Dokumentansicht durch Scrollen oder Zoomen ändert, verbleibt die Anmerkung mit den Daten, an die sie gebunden ist. Die folgende Abbildung zeigt eine Anmerkung, die ein Benutzer für einen Textausschnitt erstellt hat. Bei Änderung der Dokumentansicht bewegt sich die Hervorhebung mit den ausgewählten Daten.

Anmerkungsdaten-Verankerung

Zuordnen von Anmerkungen zu Objekten

Sie können Anmerkungen den entsprechenden Objekten zuordnen. Nehmen Sie an, Sie haben eine einfache Anwendung zum Lesen von Dokumenten, die über einen Kommentarbereich verfügt. Der Kommentarbereich kann ein Listenfeld sein, in dem der Text in Form einer Liste von Anmerkungen dargestellt wird, die in einem Dokument verankert sind. Wenn ein Element im Listenfeld vom Benutzer ausgewählt wird, zeigt die Anwendung den Abschnitt im Dokument an, an dem das entsprechende Anmerkungsobjekt verankert ist.

Im folgenden Beispiel wird veranschaulicht, wie der Ereignishandler eines solchen Listenfelds implementiert wird, das als Kommentarbereich dient.

        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
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();
    }
}

Ein weiteres Beispiel sind Anwendungen, die den Austausch von Anmerkungen und Kurznotizen zwischen Dokument-Readern per E-Mail ermöglichen. Diese Funktion ermöglicht den Anwendungen, im Reader zu der Seite zu navigieren, die die ausgetauschte Anmerkung enthält.

Siehe auch

Aufgaben

Gewusst wie: Hinzufügen eines Befehls zu einem MenuItem

Referenz

DocumentViewerBase

DocumentViewer

FlowDocumentPageViewer

FlowDocumentScrollViewer

FlowDocumentReader

IAnchorInfo

Konzepte

Annotations-Schema

Übersicht über ContextMenu

Befehlsübersicht

Übersicht über Flussdokumente