Celem zadania jest stworzenie aplikacji typu SmartWallet do monitorowania domowego budżetu. Aplikacja ma umożliwiać dodawanie transakcji (przychody/wydatki), przeglądanie ich w zaawansowanej tabeli oraz bieżące śledzenie salda za pomocą własnej kontrolki z paskiem postępu.
1000 x 600, wymiary minimalne: 800 x 500.#F5F6FA).Grid podzielony na dwie kolumny.300) to Panel Dodawania Transakcji. Powinna mieć białe tło (White), prawy margines 10 oraz cień lub ramkę grubości 1 (kolor szary).Stwórz własną kontrolkę BudgetSummaryControl (dodaj nowy element typu UserControl do projektu). Będzie ona wyświetlać podsumowanie salda.
DependencyProperty):
CurrentBalance (typu double)BalanceLimit (typu double - domyślnie 5000)StackPanel.
TextBlock wyświetlający tekst w formacie: "Aktualne saldo: [CurrentBalance] / [BalanceLimit] PLN". Użyj wiązania (Binding) do samego siebie (RelativeSource={RelativeSource AncestorType=UserControl}).ProgressBar. Jego wartość maksymalna to BalanceLimit, a aktualna to CurrentBalance. Zmień jego wysokość na 20.W lewej kolumnie głównego okna zbuduj formularz wykorzystując StackPanel.
TextBox dla nazwy transakcji.TextBox dla kwoty (Marginesy: 0,5,0,15, Padding: 5).ComboBox dla kategorii (wybór np.: Wypłata, Zakupy, Rachunki).CheckBox oznaczający czy to przychód ("Czy to przychód?").PreviewTextInput. W kodzie zablokuj możliwość wpisywania liter (wykorzystaj e.Handled = true; jeśli znak nie jest cyfrą lub przecinkiem).ValidationRule (np. StringNotEmptyValidationRule), która zwróci błąd, jeśli tekst jest pusty.Binding.ValidationRules).Validation.ErrorTemplate dla tego TextBoxa – gdy wystąpi błąd (pusta nazwa), obramowanie ma stać się czerwone (#E74C3C), a z prawej strony pola ma pojawić się mały, czerwony znak "X".Zanim wyświetlisz transakcje, musisz obsłużyć ich logikę wizualną.
AmountToColorConverter implementujący IValueConverter.
IsIncome = true), konwerter zwraca zielony pędzel (#2ECC71).IsIncome = false), zwraca czerwony (#E74C3C).TransactionTemplateSelector.
IncomeTemplate (wyświetla ikonkę/znak [+] przed nazwą transakcji).ExpenseTemplate (znak [-]).