这是我的XAML代码 -
<Window x:Class="CalculatorGridTrial.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CalculatorGridTrial"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox TextWrapping="Wrap" x:Name="operationxml" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="5" Text= "{Binding Path=Display}" />
<TextBox TextWrapping="Wrap" x:Name="resultxml" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5" Text="{Binding Path=Display}"/>
<Button x:Name="numberonexml" Content="1" Grid.Row="2" Grid.Column="0" Click="numberonexml_Click" />
<Button x:Name="numbertwoxml" Content="2" Grid.Row="2" Grid.Column="1" Click="numbertwoxml_Click" />
<Button x:Name="numberthreexml" Content="3" Grid.Row="2" Grid.Column="2" Click="numberthreexml_Click" />
<Button x:Name="numberfourxml" Content="4" Grid.Row="3" Grid.Column="0" Click="numberfourxml_Click" />
<Button x:Name="numberfivexml" Content="5" Grid.Row="3" Grid.Column="1" Click="numberfivexml_Click" />
<Button x:Name="numbersixxml" Content="6" Grid.Row="3" Grid.Column="2" Click="numbersixxml_Click" />
<Button x:Name="numbersevenxml" Content="7" Grid.Row="4" Grid.Column="0" Click="numbersevenxml_Click" />
<Button x:Name="numbereightxml" Content="8" Grid.Row="4" Grid.Column="1" Click="numbereightxml_Click" />
<Button x:Name="numberninexml" Content="9" Grid.Row="4" Grid.Column="2" Click="numberninexml_Click" />
<Button x:Name="numberzeroxml" Content="0" Grid.Row="5" Grid.Column="1" Click="numberzeroxml_Click" />
<Button x:Name="pointxml" Content="." Grid.Row="5" Grid.Column="0" Click="pointxml_Click" />
<Button x:Name="clearxml" Content="C" Grid.Row="5" Grid.Column="2" Click="clearxml_Click" />
<Button x:Name="plusxml" Content="+" Grid.Row="2" Grid.Column="3" Click="plusxml_Click" />
<Button x:Name="minusxml" Content="-" Grid.Row="2" Grid.Column="4" Click="minusxml_Click" />
<Button x:Name="mulxml" Content="*" Grid.Row="3" Grid.Column="3" Click="mulxml_Click" />
<Button x:Name="divxml" Content="/" Grid.Row="3" Grid.Column="4" Click="divxml_Click" />
<Button x:Name="equalxml" Content="=" Grid.Row="4" Grid.Column="3" Grid.ColumnSpan="2" Click="equalxml_Click" />
</Grid>
这是我的C#代码。自从我开始编码以来仅仅几天。我是这个世界的新手,还有很多东西需要学习。我已经完成了数据绑定的概念,并在此代码中实现了它。有人可以帮助我创建更少数量的功能。我在想是否可以为所有数字函数创建1个函数,为所有运算符创建1个函数。
提前致谢。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace CalculatorGridTrial
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public class CalculatorViewModel : INotifyPropertyChanged
{
private string display;
public string Display
{
get
{
return display;
}
set
{
if(display!= value)
{
display = value;
OnPropertyChanged("Display");
}
}
}
public void OnPropertyChanged(string propertyName)
{
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public partial class MainWindow : Window
{
CalculatorViewModel calc = new CalculatorViewModel();
public MainWindow()
{
InitializeComponent();
operationxml.DataContext = calc;
}
List<double> NumbersList = new List<double>();
List<char> OperatorsList = new List<char>();
List<string> BufferList = new List<string>();
char operation;
string bufferNumber = " ";
double total = 0;
private void numberonexml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "1";
bufferNumber = "1";
BufferFunction(bufferNumber);
}
private void numbertwoxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "2";
bufferNumber = "2";
BufferFunction(bufferNumber);
}
private void numberthreexml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "3";
bufferNumber = "3";
BufferFunction(bufferNumber);
}
private void numberfourxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "4";
bufferNumber = "4";
BufferFunction(bufferNumber);
}
private void numberfivexml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "5";
bufferNumber = "5";
BufferFunction(bufferNumber);
}
private void numbersixxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "6";
bufferNumber = "6";
BufferFunction(bufferNumber);
}
private void numbersevenxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "7";
bufferNumber = "7";
BufferFunction(bufferNumber);
}
private void numbereightxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "8";
bufferNumber = "8";
BufferFunction(bufferNumber);
}
private void numberninexml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "9";
bufferNumber = "9";
BufferFunction(bufferNumber);
}
private void numberzeroxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "0";
bufferNumber = "0";
BufferFunction(bufferNumber);
}
private void pointxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += ".";
bufferNumber = ".";
BufferFunction(bufferNumber);
}
private void clearxml_Click(object sender, RoutedEventArgs e)
{
calc.Display = null;
NumbersList.Clear();
OperatorsList.Clear();
BufferList.Clear();
}
private void plusxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "+";
operation = '+';
OperatorsFunction(operation);
}
private void minusxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "-";
operation = '-';
OperatorsFunction(operation);
}
private void mulxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "*";
operation = '*';
OperatorsFunction(operation);
}
private void divxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "/";
operation = '/';
OperatorsFunction(operation);
}
private void equalxml_Click(object sender, RoutedEventArgs e)
{
calc.Display += "=";
total = NumbersList[0];
//List<double> TempBufferList2 = BufferList.ConvertAll(s => double.Parse(s));
//NumbersList.AddRange(TempBufferList2);//Adding the last element(i.e. before '=' to the numberlist
NumbersList.Add(ConvertBufferArrayToNumber());
var operatorswitch = ' ';
for(int loopvariable = 1; loopvariable < NumbersList.Count; loopvariable++)
{
operatorswitch = OperatorsList.ElementAt(loopvariable - 1);
switch(operatorswitch)
{
case '+': total += NumbersList.ElementAt(loopvariable); break;
case '-': total -= NumbersList.ElementAt(loopvariable); break;
case '*': total *= NumbersList.ElementAt(loopvariable); break;
case '/': total /= NumbersList.ElementAt(loopvariable); break;
}
}
calc.Display = Convert.ToString(total);
NumbersList.Clear();
OperatorsList.Clear();
}
private void OperatorsFunction(char operation)
{
OperatorsList.Add(operation);//Adding operation to Operatorslist
//var number = Convert.ToDouble(String.Join("", BufferList));
NumbersList.Add(ConvertBufferArrayToNumber());
}
public void BufferFunction(string bufferNumber)
{
BufferList.Add(bufferNumber);// Adding numbers to Bufferlist in string format
}
private double ConvertBufferArrayToNumber()
{
var number = Convert.ToDouble(String.Join("", BufferList));
BufferList.Clear();
return number;
}
}
}
答案 0 :(得分:3)
我认为每个按钮都不需要单独的事件处理程序。创建一个。你可能会这样做..