Привет! Я сам опробовал написание калькулятора на WPF с указанными функциями, и с удовольствием поделюсь со тобой своим опытом.Для начала, чтобы создать калькулятор на WPF, нам понадобится окно приложения. Добавим элемент Window в XAML-разметку и зададим ему необходимые свойства, такие как Title (заголовок) и размеры⁚
Теперь давай добавим основные элементы калькулятора ⸺ текстовое поле, кнопки и операции. Для этого лучше использовать элементы Grid, чтобы расположить элементы в сетке.
Важное замечание ⸺ я добавил также TextBox с именем resultBox, чтобы отображать результат вычислений. Мы привязали его к свойству Result нашей модели представления. Это позволит нам легко обновлять содержимое текстового поля.Итак, давай перейдем к логике калькулятора. В коде нашего окна добавляем методы обработчиков событий для каждой из кнопок⁚
csharp
public partial class MainWindow ⁚ Window
{
private CalculatorViewModel viewModel;
public MainWindow
{
InitializeComponent;
viewModel new CalculatorViewModel;
DataContext viewModel;
}
private void Sin_Click(object sender, RoutedEventArgs e)
{
viewModel.CalculateSin;
}
private void Cos_Click(object sender, RoutedEventArgs e)
{
viewModel.CalculateCos;
}
private void Tan_Click(object sender, RoutedEventArgs e)
{
viewModel.CalculateTan;
}
// Добавь остальные методы обработчиков здесь
}
Здесь мы создаем экземпляр CalculatorViewModel и привязываем его к DataContext окна. Теперь внутри методов обработчиков мы просто вызываем соответствующие методы нашего ViewModel, которые будут выполнять вычисления.Сама модель представления (ViewModel) содержит несколько свойств, необходимых для работы калькулятора, а также методы вычисления результатов для каждой операции⁚
csharp
public class CalculatorViewModel ⁚ INotifyPropertyChanged
{
private double result;
public double Result
{
get { return result; }
set
{
if (result ! value)
{
result value;
OnPropertyChanged(nameof(Result));
}
}
}
public void CalculateSin
{
Result Math.Sin(Result);
}
public void CalculateCos
{
Result Math.Cos(Result);
}
public void CalculateTan
{
Result Math.Tan(Result);
}
// Добавь остальные методы вычисления здесь
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Здесь мы реализуем интерфейс INotifyPropertyChanged для обновления значения свойства Result при изменении.
Теперь наш калькулятор готов к использованию! Ты можешь добавить остальные кнопки и методы вычисления для остальных операций. Разумеется, это только базовая реализация, и ты можешь расширить её, добавив дополнительные функции или улучшив интерфейс. Удачи!