Share via


Ek açıklamalara Genel Bakış

Kağıt belgelere not veya yorum yazmak o kadar yaygın bir etkinliktir ki neredeyse bunu kabul ediyoruz. Bu notlar veya açıklamalar, bilgilere bayrak eklemek veya daha sonra başvurmak üzere ilgi çekici öğeleri vurgulamak için belgeye eklediğimiz "ek açıklamalar"dır. Yazdırılan belgelere not yazmak kolay ve yaygın olsa da, varsa elektronik belgelere kişisel yorumlar ekleme özelliği genellikle çok sınırlıdır.

Bu konu başlığı altında, özellikle yapışkan notlar ve vurgular olmak üzere birçok yaygın ek açıklama türü incelenir ve Microsoft Annotations Framework'ün Windows Presentation Foundation (WPF) belge görüntüleme denetimleri aracılığıyla uygulamalarda bu tür ek açıklamaları nasıl kolaylaştıracakları gösterilmektedir. Ek açıklamaları destekleyen WPF belge görüntüleme denetimlerinin FlowDocumentReader yanı sıra ve FlowDocumentScrollViewerFlowDocumentPageViewergibi DocumentViewer türetilen DocumentViewerBase denetimleri içerir.

Yapışkan Notlar

Tipik bir yapışkan not, küçük renkli bir kağıda yazılan ve daha sonra bir belgeye "takılan" bilgiler içerir. Dijital yapışkan notlar elektronik belgeler için benzer işlevler sağlar, ancak yazılan metin, el yazısı notlar (örneğin, Tablet PC "mürekkep" vuruşları) veya Web bağlantıları gibi diğer birçok içerik türünü ekleme esnekliği sağlar.

Aşağıdaki çizimde vurgulama, metin yapışkan notu ve mürekkep yapışkan not ek açıklamaları örnekleri gösterilmektedir.

Highlight, text and ink sticky note annotations.

Aşağıdaki örnek, uygulamanızda ek açıklama desteğini etkinleştirmek için kullanabileceğiniz yöntemi gösterir.

// ------------------------ 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

Önemli Noktalar

Kişiler, bir kağıt belgeyi işaretlediklerinde, tümcedeki sözcüklerin altını çizme, vurgulama, daire içine alma veya kenar boşluğunda işaretler veya işaretler çizme gibi ilgi çekici öğelere dikkat çekmek için yaratıcı yöntemler kullanır. Microsoft Annotations Framework'te ek açıklamaları vurgulama, WPF belge görüntüleme denetimlerinde görüntülenen bilgileri işaretlemek için benzer bir özellik sağlar.

Aşağıdaki çizimde vurgulama ek açıklaması örneği gösterilmektedir.

Highlight Annotation

Kullanıcılar genellikle önce bir metin veya ilgi çekici öğe seçerek ve ardından sağ tıklayarak ek ContextMenu açıklama seçeneklerini görüntüleyerek ek açıklamalar oluşturur. Aşağıdaki örnek, kullanıcıların ek açıklama oluşturmak ve yönetmek için erişebileceği yönlendirilmiş komutlarla bildirmek ContextMenu için kullanabileceğiniz Genişletilebilir Uygulama Biçimlendirme Dili'ni (XAML) gösterir.

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

Veri Bağlama

Ek Açıklamalar Çerçevesi, ek açıklamaları yalnızca görüntü görünümündeki bir konuma değil kullanıcının seçtiği verilere bağlar. Bu nedenle, belge görünümü değişirse (örneğin, kullanıcı görüntüleme penceresini kaydırdığında veya yeniden boyutlandırdığında) ek açıklama, bağlı olduğu veri seçiminde kalır. Örneğin, aşağıdaki grafikte kullanıcının metin seçiminde yaptığı bir ek açıklama gösterilmektedir. Belge görünümü değiştiğinde (kaydırıldığında, yeniden boyutlandırıldığında, ölçeklendiğinde veya başka bir şekilde hareket ettiğinde), vurgulama ek açıklaması özgün veri seçimiyle birlikte taşınır.

Annotation Data Anchoring

Ek Açıklamaları Ek Açıklamalı Nesnelerle Eşleştirme

Ek açıklamaları ilgili açıklamalı nesnelerle eşleştirebilirsiniz. Örneğin, açıklamalar bölmesi olan basit bir belge okuyucu uygulaması düşünün. Açıklamalar bölmesi, belgeye bağlı ek açıklamalar listesinden metin görüntüleyen bir liste kutusu olabilir. Kullanıcı liste kutusundan bir öğe seçerse, uygulama ilgili ek açıklama nesnesinin bağlı olduğu belgedeki paragrafı görüntüler.

Aşağıdaki örnek, açıklamalar bölmesi olarak hizmet veren böyle bir liste kutusunun olay işleyicisinin nasıl uygulandığını gösterir.

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

Başka bir örnek senaryo, e-posta aracılığıyla belge okuyucuları arasında ek açıklama ve yapışkan not değişimini sağlayan uygulamaları içerir. Bu özellik, bu uygulamaların okuyucuda değiştirilmekte olan ek açıklamayı içeren sayfaya gitmesine olanak tanır.

Ayrıca bkz.