Загрузка данных


using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Controls;

namespace KonwerterWalut
{
    public partial class MainWindow : Window
    {
        private Dictionary<string, decimal> rates = new Dictionary<string, decimal>()
        {
            { "PLN", 1.0m },
            { "USD", 4.02m },
            { "EUR", 4.32m },
            { "RUB", 0.045m },
            { "BYN", 1.25m },
            { "CNY", 0.56m }
        };

        public MainWindow()
        {
            InitializeComponent();
            LoadRatesFromFile();

            CbFrom.ItemsSource = rates.Keys;
            CbTo.ItemsSource = rates.Keys;

            CbFrom.SelectedItem = "PLN";
            CbTo.SelectedItem = "USD";
        }

        private void LoadRatesFromFile()
        {
            string filePath = "rates.txt";

            if (!File.Exists(filePath))
            {
                File.WriteAllLines(filePath, new string[]
                {
                    "PLN;1.0",
                    "USD;4.02",
                    "EUR;4.32",
                    "RUB;0.045",
                    "BYN;1.25",
                    "CNY;0.56"
                });
            }

            if (File.Exists(filePath))
            {
                var lines = File.ReadAllLines(filePath);
                foreach (var line in lines)
                {
                    var parts = line.Split(';');
                    if (parts.Length == 2 && decimal.TryParse(parts[1], out decimal val))
                    {
                        rates[parts[0]] = val;
                    }
                }
            }
        }

        private void Calculate(object sender, RoutedEventArgs e)
        {
            if (TxtResult == null || CbFrom.SelectedItem == null || CbTo.SelectedItem == null) return;

            if (decimal.TryParse(TxtAmount.Text, out decimal amount) && amount >= 0)
            {
                string from = CbFrom.SelectedItem.ToString();
                string to = CbTo.SelectedItem.ToString();

                decimal amountInPln = amount * rates[from];
                decimal result = amountInPln / rates[to];

                TxtResult.Text = $"{result:F2} {to}";
            }
            else
            {
                TxtResult.Text = "Podaj liczbę > 0";
            }
        }
    }
}