Přehled poznámek
Psaní poznámek nebo komentářů k papírovým dokumentům je taková běžná aktivita, kterou téměř bereme za udělenou. Tyto poznámky nebo komentáře jsou "anotace", které přidáváme do dokumentu pro označení informací nebo zvýraznění položek pro pozdější použití. I když je psaní poznámek na tištěných dokumentech snadné a běžné, možnost přidávat osobní komentáře k elektronickým dokumentům je obvykle velmi omezená, pokud je k dispozici vůbec.
Toto téma se zabývá několika běžnými typy poznámek, konkrétně rychlých poznámek a zvýraznění, a ukazuje, jak rozhraní MicrosoftNots Framework usnadňuje tyto typy poznámek v aplikacích prostřednictvím ovládacích prvků pro prohlížení dokumentů WPF (Windows Presentation Foundation). Ovládací prvky zobrazení dokumentů WPF, které podporují poznámky, zahrnují FlowDocumentReader a FlowDocumentScrollViewera také ovládací prvky odvozené z DocumentViewerBase, jako jsou DocumentViewer a FlowDocumentPageViewer.
Rychlé poznámky
Typická lepkavá poznámka obsahuje informace napsané na malém kusu barevného papíru, který se pak "zasekne" na dokument. Digitální rychlé poznámky poskytují podobné funkce pro elektronické dokumenty, ale s přidanou flexibilitou, která zahrnuje mnoho dalších typů obsahu, jako je napsaný text, rukou psané poznámky (například tahy rukopisu na tabletu PC) nebo webové odkazy.
Následující obrázek ukazuje některé příklady zvýraznění, textových poznámek a inkoustových poznámek.
Následující příklad ukazuje metodu, kterou můžete použít k povolení podpory poznámek ve vaší aplikaci.
// ------------------------ 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
Zvýrazňuje
Lidé používají kreativní metody k upoutat pozornost na zajímavé položky, když označí papírový dokument, jako je podtržení, zvýraznění, zakroužkování slov ve větě nebo kreslicí značky nebo notace na okraji. Zvýraznění poznámek v rozhraní MicrosoftNots Framework poskytuje podobnou funkci pro označení informací zobrazených v ovládacích prvcích zobrazení dokumentů WPF.
Následující obrázek ukazuje příklad poznámky ke zvýraznění.
Uživatelé obvykle vytvářejí poznámky tak, že nejdřív vyberou nějaký text nebo položku, která je zajímá, a pak kliknou pravým tlačítkem myši, čímž se zobrazí ContextMenu možností poznámek. Následující příklad ukazuje jazyk XAML (Extensible Application Markup Language), pomocí kterého můžete deklarovat ContextMenu se směrovanými příkazy, ke kterým mají uživatelé přístup k vytváření a správě poznámek.
<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 & Notes" />
</ContextMenu>
</DocumentViewer.ContextMenu>
Ukotvení dat
Rámec poznámek váže poznámky k datům, která uživatel vybere, nejen na pozici ve zobrazení. Pokud se tedy zobrazení dokumentu změní, například když se uživatel posune nebo změní velikost okna zobrazení, zůstane poznámka s výběrem dat, ke kterému je vázána. Například následující obrázek znázorňuje poznámku, kterou uživatel provedl u výběru textu. Když se zobrazení dokumentu změní (posune se, změní velikost, měřítko nebo jinak přesune), přesune se poznámka zvýraznění s původním výběrem dat.
Shoda anotací s anotovanými objekty
Poznámky můžete spárovat s odpovídajícími anotovanými objekty. Představte si například jednoduchou aplikaci pro čtení dokumentů, která obsahuje podokno komentářů. Podokno komentářů může být seznam, který zobrazuje text ze seznamu poznámek ukotvených k dokumentu. Pokud uživatel vybere položku v seznamu, aplikace zobrazí odstavec v dokumentu, ke kterému je odpovídající objekt poznámky ukotven.
Následující příklad ukazuje, jak implementovat obslužnou rutinu události takového seznamového pole, které slouží jako podokno komentářů.
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
Další ukázkový scénář zahrnuje aplikace, které umožňují výměnu poznámek a rychlých poznámek mezi čtenáři dokumentů e-mailem. Tato funkce umožňuje těmto aplikacím přejít na stránku, která obsahuje poznámku, která se vyměňuje.
Viz také
- DocumentViewerBase
- DocumentViewer
- FlowDocumentPageViewer
- FlowDocumentScrollViewer
- FlowDocumentReader
- IAnchorInfo
- Schéma anotací
-
ContextMenu – přehled - Přehled příkazů
- Přehled tokových dokumentů
- Postup: Jak přidat příkaz do položky nabídky
.NET Desktop feedback