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 BWP.WinFormControl
{
  public partial class NumberPad : INotifyPropertyChanged
  {
    private string _result;
    public string Result
    {
      get { return _result; }
      private set { _result = value; OnPropertyChanged("Result"); }
    }

    public NumberPad()
    {
      InitializeComponent();
      DataContext = this;
      Result = string.Empty;
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
      var button = sender as Button;
      if (button != null)
        switch (button.CommandParameter.ToString())
        {
          case "ESC":
            Close();
            break;

          case "RETURN":
            DialogResult = true;
            break;

          case "BACK":
            if (Result.Length > 0)
              Result = Result.Remove(Result.Length - 1);
            break;

          default:
            Result += button.Content.ToString();
            break;
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(String info)
    {
      if (PropertyChanged != null)
      {
        PropertyChanged(this, new PropertyChangedEventArgs(info));
      }
    }
  }
}
