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


<Window x:Class="CalculatorApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Калькулятор" Height="350" Width="300" ResizeMode="NoResize">
    <Grid Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <TextBox x:Name="Display" FontSize="24" TextAlignment="Right" IsReadOnly="True" VerticalContentAlignment="Center" Margin="0,0,0,10" Text="0"/>

        <UniformGrid Grid.Row="1" Columns="4" Rows="5">
            <Button Content="7" Click="Number_Click" Margin="2"/>
            <Button Content="8" Click="Number_Click" Margin="2"/>
            <Button Content="9" Click="Number_Click" Margin="2"/>
            <Button Content="/" Click="Operator_Click" Margin="2"/>

            <Button Content="4" Click="Number_Click" Margin="2"/>
            <Button Content="5" Click="Number_Click" Margin="2"/>
            <Button Content="6" Click="Number_Click" Margin="2"/>
            <Button Content="*" Click="Operator_Click" Margin="2"/>

            <Button Content="1" Click="Number_Click" Margin="2"/>
            <Button Content="2" Click="Number_Click" Margin="2"/>
            <Button Content="3" Click="Number_Click" Margin="2"/>
            <Button Content="-" Click="Operator_Click" Margin="2"/>

            <Button Content="0" Click="Number_Click" Margin="2"/>
            <Button Content="C" Click="Clear_Click" Margin="2"/>
            <Button Content="^" Click="Operator_Click" Margin="2"/>
            <Button Content="+" Click="Operator_Click" Margin="2"/>

            <Button Content="=" Click="Equals_Click" Grid.ColumnSpan="4" Margin="2"/>
        </UniformGrid>
    </Grid>
</Window>



using System;
using System.Windows;
using System.Windows.Controls;

namespace CalculatorApp
{
    public partial class MainWindow : Window
    {
        private double _firstNumber = 0;
        private string _operation = "";
        private bool _isOperationPressed = false;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Number_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            if (Display.Text == "0" || _isOperationPressed)
            {
                Display.Text = button.Content.ToString();
                _isOperationPressed = false;
            }
            else
            {
                Display.Text += button.Content.ToString();
            }
        }

        private void Operator_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            if (double.TryParse(Display.Text, out double result))
            {
                _firstNumber = result;
                _operation = button.Content.ToString();
                _isOperationPressed = true;
            }
        }

        private void Equals_Click(object sender, RoutedEventArgs e)
        {
            if (double.TryParse(Display.Text, out double secondNumber))
            {
                double result = 0;
                switch (_operation)
                {
                    case "+":
                        result = _firstNumber + secondNumber;
                        break;
                    case "-":
                        result = _firstNumber - secondNumber;
                        break;
                    case "*":
                        result = _firstNumber * secondNumber;
                        break;
                    case "/":
                        if (secondNumber == 0)
                        {
                            MessageBox.Show("Ошибка: деление на ноль.");
                            return;
                        }
                        result = _firstNumber / secondNumber;
                        break;
                    case "^":
                        result = Math.Pow(_firstNumber, secondNumber);
                        break;
                }
                Display.Text = result.ToString();
                _operation = "";
            }
        }

        private void Clear_Click(object sender, RoutedEventArgs e)
        {
            Display.Text = "0";
            _firstNumber = 0;
            _operation = "";
        }
    }
}