Zadanie #1: Menedżer Notatek

1. Wprowadzenie teoretyczne: Nowy kontener DockPanel

Do tej pory poznałeś kontenery Grid (siatka jak w Excelu) oraz StackPanel (stos elementów). W tym zadaniu jako główny szkielet okna możesz wykorzystać kontener DockPanel.

Jak działa DockPanel?

DockPanel działa jak magnes przyciągający elementy do krawędzi okna:

┌────────────────────────────────────────────────────────┐
│               DockPanel.Dock="Top" (np. Menu)          │
├──────────────┬──────────────────────────┬──────────────┤
│  Dock="Left" │      ŚRODEK OKNA         │ Dock="Right" │
│  (Panel bocz)│   (Ostatni element       │              │
│              │    wypełnia resztę)      │              │
├──────────────┴──────────────────────────┴──────────────┤
│              DockPanel.Dock="Bottom" (Pasek statusu)   │
└────────────────────────────────────────────────────────┘

2. Podpowiedź do konstrukcji siatki Grid (Środek okna)

Wewnątrz obszaru roboczego (środka okna) powinieneś użyć kontenera Grid. Aby interfejs był czytelny i responsywny, zastosuj odpowiednie jednostki wymiarowania:

3. Treść zadania do wykonania

Zaprojektuj i zaprogramuj aplikację WPF o nazwie MenedzerNotatek, która pozwoli użytkownikowi na wczytywanie i edycję plików tekstowych oraz przeglądanie plików graficznych.

Etap I: Przygotowanie zasobów projektu (Waga: 4 pkt)

  1. Utwórz w projekcie folder o nazwie Dane, a w nim dwa pliki:
    • Plik tekstowy start.txt o treści: "Witaj w aplikacji! Możesz edytować ten tekst lub otworzyć plik z dysku."
    • Dowolny plik graficzny domyslny.png (będący domyślnym podglądem).
  2. Dla obu plików ustaw we właściwościach (skrót F4):
    • Build Action: Content
    • Copy to Output Directory: Copy if newer (Kopiuj, jeśli nowszy).
  3. Warunek zaliczenia etapu: Po skompilowaniu projektu (F5) w katalogu bin\Debug\... musi fizycznie istnieć folder Dane z obydwoma plikami.

Etap II: Interfejs użytkownika XAML (Waga: 6 pkt)

  1. Główne okno aplikacji ma mieć wymiary początkowe: szerokość 750, wysokość 450, minimalną szerokość 600, minimalną wysokość 350 oraz tytuł: "Menedżer Notatek".
  2. Jako kontener główny okna zastosuj DockPanel.
  3. Na dole okna (Dock="Bottom") umieść pasek statusu: TextBlock o nazwie lblStatus z szarym tłem, marginesem wewnętrznym i początkowym tekstem: "Gotowy".
  4. Wypełnij resztę okna kontenerem Grid (podzielonym na kolumny i wiersze według wskazówek z punktu 2).
    • Interfejs musi zawierać:
      • 3 przyciski: btnOtworzTekst ("Otwórz notatkę..."), btnZapiszTekst ("Zapisz jako..."), btnWybierzObraz ("Wybierz zdjęcie...").
      • Pole edycyjne TextBox o nazwie txtNotatka: z włączonym zawijaniem wierszy (TextWrapping) oraz pionowym paskiem przewijania (VerticalScrollBarVisibility).
      • Kontrolkę Image o nazwie imgPodglad z właściwością Stretch="Uniform", osadzoną wewnątrz kontrolki Border z cienką ramką.

Etap III: Logika aplikacji w C# (Waga: 10 pkt)

1. Inicjalizacja przy uruchomieniu (2 pkt)

2. Obsługa przycisku "Otwórz notatkę..." (3 pkt)

3. Obsługa przycisku "Zapisz jako..." (2 pkt)

4. Obsługa przycisku "Wybierz zdjęcie..." (2 pkt)

5. Bezpieczeństwo i kultura kodu (1 pkt)