public Calc() { var layout = new Grid(); // Rows: layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(2, GridUnitType.Star) }); layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); // Columns: layout.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); layout.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); Content = layout; displayLabel = new Label { Text = "" }; var b0 = new Button { Text = "0" }; var b1 = new Button { Text = "1" }; var b2 = new Button { Text = "2" }; var b3 = new Button { Text = "3" }; var b4 = new Button { Text = "4" }; var b5 = new Button { Text = "5" }; var b6 = new Button { Text = "6" }; var b7 = new Button { Text = "7" }; var b8 = new Button { Text = "8" }; var b9 = new Button { Text = "9" }; var bMultiply = new Button { Text = "X" }; var bDivide = new Button { Text = "/" }; var bAdd = new Button { Text = "+" }; var bSubtract = new Button { Text = "-" }; var bClear = new Button { Text = "Clear" }; var bEquals = new Button { Text = "=" }; //output Grid.SetColumn(displayLabel, 1); Grid.SetRow(displayLabel, 0); Grid.SetColumnSpan(displayLabel, 4); //buttons Grid.SetColumn(b0, 1); Grid.SetColumn(b1, 2); Grid.SetColumn(b2, 3); Grid.SetColumn(b3, 1); Grid.SetColumn(b4, 2); Grid.SetColumn(b5, 3); Grid.SetColumn(b6, 1); Grid.SetColumn(b7, 2); Grid.SetColumn(b8, 3); Grid.SetColumn(b9, 1); Grid.SetColumn(bEquals, 2); Grid.SetColumn(bClear, 3); Grid.SetColumn(bAdd, 0); Grid.SetColumn(bSubtract, 0); Grid.SetColumn(bDivide, 0); Grid.SetColumn(bMultiply, 0); Grid.SetRow(b0, 4); Grid.SetRow(b1, 4); Grid.SetRow(b2, 4); Grid.SetRow(b3, 3); Grid.SetRow(b4, 3); Grid.SetRow(b5, 3); Grid.SetRow(b6, 2); Grid.SetRow(b7, 2); Grid.SetRow(b8, 2); Grid.SetRow(b9, 1); Grid.SetRow(bEquals, 1); Grid.SetRow(bClear, 1); Grid.SetRow(bAdd, 1); Grid.SetRow(bSubtract, 2); Grid.SetRow(bDivide, 3); Grid.SetRow(bMultiply, 4); layout.Children.Add(b0); layout.Children.Add(b1); layout.Children.Add(b2); layout.Children.Add(b3); layout.Children.Add(b4); layout.Children.Add(b5); layout.Children.Add(b6); layout.Children.Add(b7); layout.Children.Add(b8); layout.Children.Add(b9); layout.Children.Add(displayLabel); layout.Children.Add(bClear); layout.Children.Add(bEquals); layout.Children.Add(bAdd); layout.Children.Add(bSubtract); layout.Children.Add(bDivide); layout.Children.Add(bMultiply); //event handlers b0.Clicked += OnNumericButtonClicked; b1.Clicked += OnNumericButtonClicked; b2.Clicked += OnNumericButtonClicked; b3.Clicked += OnNumericButtonClicked; b4.Clicked += OnNumericButtonClicked; b5.Clicked += OnNumericButtonClicked; b6.Clicked += OnNumericButtonClicked; b7.Clicked += OnNumericButtonClicked; b8.Clicked += OnNumericButtonClicked; b9.Clicked += OnNumericButtonClicked; bEquals.Clicked += OnEqualButtonClicked; bClear.Clicked += OnClearButtonClicked; bAdd.Clicked += OnAddButtonClicked; bSubtract.Clicked += OnSubtractButtonClicked; bDivide.Clicked += OnDivideButtonClicked; bMultiply.Clicked += OnMultiplyButtonClicked; }
public MainPage() { Grid layout = new Grid { Padding = new Thickness(5, 0), RowSpacing = 1, ColumnSpacing = 1, BackgroundColor = Color.Black, }; // Setup the grid 4x6 layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(2, GridUnitType.Star) }); layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); layout.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); layout.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); layout.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); layout.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); layout.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); this.resultText = new Label { FontSize = 48, FontAttributes = FontAttributes.Bold, BackgroundColor = Color.Black, TextColor = Color.White, HorizontalTextAlignment = TextAlignment.End, VerticalTextAlignment = TextAlignment.Center, LineBreakMode = LineBreakMode.NoWrap, }; Grid.SetColumnSpan(this.resultText, 4); layout.Children.Add(this.resultText); // Create the numbers. layout.Children.Add(CreateNumberButton("7", 1, 0)); layout.Children.Add(CreateNumberButton("8", 1, 1)); layout.Children.Add(CreateNumberButton("9", 1, 2)); layout.Children.Add(CreateNumberButton("4", 2, 0)); layout.Children.Add(CreateNumberButton("5", 2, 1)); layout.Children.Add(CreateNumberButton("6", 2, 2)); layout.Children.Add(CreateNumberButton("1", 3, 0)); layout.Children.Add(CreateNumberButton("2", 3, 1)); layout.Children.Add(CreateNumberButton("3", 3, 2)); Button zero = CreateNumberButton("0", 4, 0); Grid.SetColumnSpan(zero, 3); layout.Children.Add(zero); // Create the operators layout.Children.Add(CreateOperatorButton("/", 1)); layout.Children.Add(CreateOperatorButton("X", 2)); layout.Children.Add(CreateOperatorButton("-", 3)); layout.Children.Add(CreateOperatorButton("+", 4)); // Create the clear button. Button clear = new Button() { Text = "C", BackgroundColor = Color.FromRgb(0x80, 0x80, 0x80), TextColor = Color.White, Font = Font.SystemFontOfSize(36), BorderRadius = 0, }; Grid.SetRow(clear, 5); clear.Clicked += OnClear; layout.Children.Add(clear); // And the equals. Button equals = new Button() { Text = "=", BackgroundColor = Color.FromHex("#FFA500"), TextColor = Color.White, Font = Font.SystemFontOfSize(36), BorderRadius = 0, }; Grid.SetRow(equals, 5); Grid.SetColumn(equals, 1); Grid.SetColumnSpan(equals, 3); equals.Clicked += OnCalculate; layout.Children.Add(equals); OnClear(null, EventArgs.Empty); Content = layout; }
public App() { InitializeComponent(); #region Button styles var numButton = new Style(typeof(Button)) { Setters = { new Setter { Property = Button.BackgroundColorProperty, Value = Color.White }, new Setter { Property = Button.FontSizeProperty, Value = 32 }, new Setter { Property = Button.CornerRadiusProperty, Value = 0 } } }; var functionButton = new Style(typeof(Button)) { Setters = { new Setter { Property = Button.BackgroundColorProperty, Value = Color.Orange }, new Setter { Property = Button.FontSizeProperty, Value = 32 }, new Setter { Property = Button.CornerRadiusProperty, Value = 0 } } }; var darkerButton = new Style(typeof(Button)) { Setters = { new Setter { Property = Button.BackgroundColorProperty, Value = Color.DarkGray }, new Setter { Property = Button.FontSizeProperty, Value = 32 }, new Setter { Property = Button.CornerRadiusProperty, Value = 0 } } }; #endregion #region Grid Setup var grid = new Grid { RowSpacing = 1, ColumnSpacing = 1, BackgroundColor = Color.Black }; grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); _calculationLabel = new Label { BackgroundColor = Color.Transparent, Text = "0", TextColor = Color.White, HorizontalTextAlignment = TextAlignment.End, VerticalTextAlignment = TextAlignment.Center, FontSize = 50, LineBreakMode = LineBreakMode.HeadTruncation }; grid.Children.Add(_calculationLabel, 0, 0); Grid.SetColumnSpan(_calculationLabel, 4); var sevenButton = new Button { Text = "7", Style = numButton }; sevenButton.Clicked += (s, e) => AppendNum("7"); grid.Children.Add(sevenButton, 0, 1); var eightButton = new Button { Text = "8", Style = numButton }; eightButton.Clicked += (s, e) => AppendNum("8"); grid.Children.Add(eightButton, 1, 1); var nineButton = new Button { Text = "9", Style = numButton }; nineButton.Clicked += (s, e) => AppendNum("9"); grid.Children.Add(nineButton, 2, 1); var divideButton = new Button { Text = "/", Style = functionButton }; divideButton.Clicked += (s, e) => AddToEquation("/"); grid.Children.Add(divideButton, 3, 1); var fourButton = new Button { Text = "4", Style = numButton }; fourButton.Clicked += (s, e) => AppendNum("4"); grid.Children.Add(fourButton, 0, 2); var fiveButton = new Button { Text = "5", Style = numButton }; fiveButton.Clicked += (s, e) => AppendNum("5"); grid.Children.Add(fiveButton, 1, 2); var sixButton = new Button { Text = "6", Style = numButton }; sixButton.Clicked += (s, e) => AppendNum("6"); grid.Children.Add(sixButton, 2, 2); var multiplyButton = new Button { Text = "*", Style = functionButton }; multiplyButton.Clicked += (s, e) => AddToEquation("*"); grid.Children.Add(multiplyButton, 3, 2); var oneButton = new Button { Text = "1", Style = numButton }; oneButton.Clicked += (s, e) => AppendNum("1"); grid.Children.Add(oneButton, 0, 3); var twoButton = new Button { Text = "2", Style = numButton }; twoButton.Clicked += (s, e) => AppendNum("2"); grid.Children.Add(twoButton, 1, 3); var threeButton = new Button { Text = "3", Style = numButton }; threeButton.Clicked += (s, e) => AppendNum("3"); grid.Children.Add(threeButton, 2, 3); var minusButton = new Button { Text = "-", Style = functionButton }; minusButton.Clicked += (s, e) => AddToEquation("-"); grid.Children.Add(minusButton, 3, 3); var zeroButton = new Button { Text = "0", Style = numButton }; zeroButton.Clicked += (s, e) => AppendNum("0"); grid.Children.Add(zeroButton, 0, 4); Grid.SetColumnSpan(zeroButton, 3); var plusButton = new Button { Text = "+", Style = functionButton }; plusButton.Clicked += (s, e) => AddToEquation("+"); grid.Children.Add(plusButton, 3, 4); var clearButton = new Button { Text = "C", Style = darkerButton }; clearButton.Clicked += DeleteNum; grid.Children.Add(clearButton, 0, 5); var equalsButton = new Button { Text = "=", Style = functionButton }; equalsButton.Clicked += Equate; grid.Children.Add(equalsButton, 1, 5); Grid.SetColumnSpan(equalsButton, 3); #endregion MainPage = new ContentPage { Content = grid }; }