Mavzu: Hujjatlar. Reja



Yüklə 0,58 Mb.
səhifə6/6
tarix14.04.2023
ölçüsü0,58 Mb.
#98008
1   2   3   4   5   6
121

Izohlar.

Oqimli va sobit hujjatlar izohlar kabi funksiyalarni qo‘llab-quvvatlaydi. Izohlar sizga hujjatlarga sharhlar qo'shish, matnning ayrim qismlarini ajratib ko'rsatish va h.k. imkonini beradi.
Izohlar bilan ishlash uchun biz quyidagi interfeys belgilarini aniqlaymiz:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:AnnotationApp"
xmlns:a="clr-namespace:System.Windows.Annotations;assembly=PresentationFramework"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="400">














В 1808 году император Александр ездил в Эрфурт для новой встречи с Наполеоном,
и в высшем свете много говорили о важности этого события.
В 1809 году близость двух «властелинов мира», как называли Александра и Наполеона,
дошла до того, что когда Наполеон объявил войну Австрии, русский корпус выступил за границу,
чтобы сражаться на стороне бывшего противника против бывшего союзника, австрийского императора.







Shunday qilib, keling, boshidan boshlaylik. Qatorda xmlns:a="clr-namespace:System.Windows.Annotations;assembly=PresentationFramework"biz izohlar uchun nom maydonini kiritamiz va uni prefiksga joylashtiramiz a. Keyinchalik, asboblar panelida biz izohlarni boshqaradigan bir qator tugmalar yaratamiz. Birinchi tugma matn izohini yaratish uchun. Buning uchun biz AnnotationService.CreateTextStickyNoteCommand buyrug'idan foydalanamiz . AnnotationService obyektida bir xil nomdagi usuldan ham foydalanishimiz va kodda izoh yaratishimiz mumkin. Keyin, keyingi tugmalar uchun biz grafik izoh yaratish, rang bilan ajratib ko'rsatish va izohlarni olib tashlash uchun buyruqlar qo'shamiz. Shuni esda tutingki, ajratib ko'rsatish uchun biz buyruqqa parametr o'tkazamiz - bu holda rang CommandParameter="{x:Static Brushes.Yellow}".
Hammasi bo'lib bizda izohlar uchun oltita buyruq mavjud:

  • AnnotationService.ClearHighlightsCommand: ta'kidlashni olib tashlaydi

  • AnnotationService.CreateHighlightCommand: ta'kidlash rangini qo'shadi

  • AnnotationService.CreateInkStickyNoteCommand: grafik izoh qo'shadi

  • AnnotationService.CreateTextStickyNoteCommand: oddiy matn izohini qo'shadi

  • AnnotationService.DeleteAnnotationsCommand: grafik va matn izohlarini olib tashlaydi, shuningdek, ranglarni ajratib ko'rsatishni olib tashlaydi

  • AnnotationService.DeleteStickyNotesCommand: grafik va matn izohlarini olib tashlaydi

Shu bilan birga, biz tugmalar uchun bosish moslamalarini belgilashimiz shart emas, chunki izoh buyruqlari biz uchun hamma narsani qiladi.
Barcha asosiy izoh sinflari System.Windows.Annotations nom maydonida saqlanadi . Ilovamiz uchun izohlar mavjud bo'lishi uchun biz ularni kiritishimiz kerak. Ulanishni oynani yuklash hodisasi ishlov beruvchisida amalga oshiramiz. Shuningdek, biz oynani yopish ishlovchisida ilovadan izoh qo'llab-quvvatlashni olib tashlaymiz:

using System.IO;
using System.Windows;
using System.Windows.Annotations;
using System.Windows.Annotations.Storage;


namespace AnnotationApp
{
public partial class MainWindow : Window
{
FileStream fs;
AnnotationService anService;


public MainWindow()
{
InitializeComponent();
this.Loaded += Window_Loaded;
this.Unloaded += Window_Unloaded;
}


private void Window_Loaded(object sender, RoutedEventArgs e)
{
//инициализация службы аннотаций
anService = new AnnotationService(docViewer);
// создание связанного потока
fs = new FileStream("storage.xml", FileMode.OpenOrCreate);
// привязка потока к хранилищу аннотаций
AnnotationStore store = new XmlStreamStore(fs);
store.AutoFlush = true;
// включение службы
anService.Enable(store);
}


private void Window_Unloaded(object sender, RoutedEventArgs e)
{
if (anService != null && anService.IsEnabled)
{
anService.Store.Flush();
anService.Disable();
fs.Close();
}
}
}
}

Shunday qilib, ushbu kodda biz annotatsiya xizmatini yaratamiz (klass AnnotationService ) va hujjat konteyneri ob'ektini uning konstruktoriga o'tkazamiz. Bu holda biz xaml-da aniqlangan FlowDocumentScrollViewer ob'ektini ifodalovchi docViewer o'zgaruvchisidan o'tmoqdamiz. Keyin biz izohlar do'konini yaratadigan mavzuni yaratamiz - AnnotationStore . Enable usulidan foydalanib , biz docViewer ob'ekti uchun izohli xotirani mavjud qilamiz. E'tibor bering, bitta hujjat konteyneri uchun biz bitta AnnotationService va bitta AnnotationStore ob'ektini yaratishimiz mumkin. Yangi hujjat uchun siz ushbu ob'ektlarni qayta yaratishingiz kerak bo'ladi. storage.xml fayli biz uchun izohlarni saqlaydi, keyinchalik ular hujjatga yuklanadi. U hali yaratilmagan, shuning uchun OpenOrCreate rejimini o'rnatamiz.
Endi dasturni yuklaymiz va matnning bir qismini tanlaymiz - yuqoridagi buyruqlar bilan tugmalar biz uchun mavjud bo'ladi. Keling, izoh yaratishga harakat qilaylik:

3-rasm.
Ilovani yopgandan so'ng, bizning izohimiz faylga saqlanadi va dastur yana ochilganda u hujjatga yuklanadi.
Nazorat savollari



  1. Hujjatlar oqimi.

  2. Hujjat konteynerlarini oqimlash.

  3. RichTextBox va hujjatlarni tahrirlash.

  4. Ruxsat etilgan hujjatlar.

  5. Izohlar.

Yüklə 0,58 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin