C# WPF, beginner ... problem z kontrolkami

0

Witam,
Jako pierwszy program w C# WPF, chcę napisać kalkulator, pojawiający się problem to przekazywanie wartości z kontrolek i ich wyświetlanie :/ np z guzika 0,1,2...9 jak pobrać wartość po naciśnięciu odpowiedniego guzika jego wartość ? a poźniej ich wyświetleniu w texboxie ? :(

 
   private void przycisk1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Hello World!. Kliknięto przycisk o nazwie " +
        ((Button)sender).Name);

        }

0

Możesz jaśniej? Jaką wartość chcesz pobrać, z jakiej kontrolki?

0

Np mam takiego button'a:

 
<Button Name="button0" Click="button0_Click" />
<Button Name="button1" Click="button1_Click" />
<Button Name="button2" Click="button2_Click" />
...
<Button Name="mnozenie" Click="mnozenie_Click" />
...

I teraz np wciskam button1 (i w metodzie chcę przypisać do niego wartość 1), wciskam button mnożenie, przypisuje przypisuje mnożenie i na koniec np button2 ( przypisuje wartość 2 w metodzie), taki najprostszy jak się tylko da kalkulator. I wiadomo w między czasie wszystkie te wartości wyświetlać w okienku.

a = int.Parse(TXB_1.Text);
            MessageBox.Show(a.ToString());
 
0

Na WPF się nie znam nic ale chyba można zrobić tak samo, że ustawiasz sobie zmienną składową klasy i do niej przypisujesz odpowiednio znaki po naciśnięciu danego buttona.

0

Poczytaj o MVVM, to jest głowny pattern do wpf. Pierwszy rzut z polskiego googla: http://arturlipski.wordpress.com/2010/02/21/wpf-mvvm-pattern/

1

@siararadek - skoro zwykły WPF jest na początek trudny to MVVM to samobójstwo. Nie ma szans żeby się nie pogubić w tych wszystkich RoutedCommands, Data Bindings, etc...

Prosty kalkulator w jednej metodzie :P (Nie wymaga żadnego XAML-a, wystarczy to wkleić do okna):

   public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var panel = new StackPanel();
            this.Content = panel;

            Func<float, float, float>[] lambdas = { (x, y) => x + y, (x, y) => x - y, (x, y) => x * y, (x, y) => x / y };
            var funcs = lambdas.Zip("+-*/", (tag, name) => new Tuple<object, char>(tag, name));
            var ints = Enumerable.Range(0, 10).Zip("0123456789", (tag, name) => new Tuple<object, char>(tag, name));
            var content = funcs.Concat(ints);

            var resultShow = new Label();
            panel.Children.Add(resultShow);

            var memoryShow = new Label();
            panel.Children.Add(memoryShow);

            float remembered = 0;
            float result = 0;
            foreach (var info in content)
            {
                var btn = new Button
                {
                    Content = info.Item2,
                    Tag = info.Item1
                };
                btn.Click += (sender, e) =>
                {
                    var b = (Button)sender;
                    if (b.Tag is int)
                    {
                        remembered = remembered * 10 + (int)b.Tag;
                        memoryShow.Content = remembered.ToString();
                    }
                    else
                    {
                        var l = (Func<float, float, float>)b.Tag;
                        result = l(result, remembered);
                        remembered = 0;
                        resultShow.Content = result.ToString();
                    }
                };

                panel.Children.Add(btn);
            }
        }
    }
0

Może ktoś mi polecić książki do C# WPF albo toruriale ??
Bo w necie sporo tego jest, ale sporo też jest do d***
tych toturiali :/ Polecacie coś od siebie ?

0

@Tezcatlipoca ja wiem, że jest nieco trudny, ale jak się człowiek nauczy (co de facto do prostych rozwiązań tak trudne nie jest - tylko binding i command) to już łatwo idzie. I nie robi się kwiatków typu pisanie winformsami w WPF jak to u mnie w dawnej pracy robili.

0

@poniatowski , materiały dostepne na necie spokojnie stykną. MSDN + http://www.wpftutorial.net/

1 użytkowników online, w tym zalogowanych: 0, gości: 1