Witam

Mam taki problem otóż mam program bardzo prosta symulacja konta, muszę zrobić w nim wiązanie danych i odświeżanie. Mam listboxa w którym sa pokazane konta wraz z numerami nazwa i saldem. MainWindow.xaml mam podzielone na 3 wiersze (grid). W grid.row=0 jest textbox z numerem konta (w kontrolce wiazanie danych działa jak w listboxie zaznaczam jakas pozycje to w tej kontrolce pokazuje mi sie nr konta i ok). Nastepnie w grid.row=1 mam groupboxa a w nim stackpanel a w nim grid podzielony na 3 wiersze i teraz tak w grid.row=0 (stackpanel) jest kontrolka textbox w której ma sie pokazywać saldo danego konta jak się na nio najedzie w listboxie i problem w tym ze nie działa. W grid.row=2 jest listbox, kompletnie nie mam pomysłu jak można to zrobić aby pokazywało mi się saldo w odpowiedniej kontrolce. Podobnie nie wiem jak zrobić aby listbox mi się aktualizował jak się kliknie button wpłać lub wypłać.
Kod XAML

<Window x:Class="saldo.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:saldo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="525">
    <Grid HorizontalAlignment="Left" Height="403" Margin="-4,10,0,0" VerticalAlignment="Top" Width="515"
           DataContext="{Binding ElementName=lista, Path=SelectedItem}">
        <Grid.RowDefinitions>
            <RowDefinition Height="82*"/>
            <RowDefinition Height="178*"/>
            <RowDefinition Height="143*"/>
        </Grid.RowDefinitions>
        <Label Content="numer konta" HorizontalAlignment="Left" Height="36" Margin="23,19,0,0" VerticalAlignment="Top" Width="83"/>
        <TextBox x:Name="tnr" HorizontalAlignment="Left" Height="43" Margin="122,19,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="318"
                 Text="{Binding Path=numerkonta, UpdateSourceTrigger=PropertyChanged}"/>
        <Button x:Name="ok" Content="OK" HorizontalAlignment="Left" Height="30" Margin="445,32,0,0" VerticalAlignment="Top" Width="51" Click="ok_Click"/>
        <GroupBox Header="KONTO" HorizontalAlignment="Left" Height="158" Margin="23,10,0,0" Grid.Row="1" VerticalAlignment="Top" Width="482">
            <StackPanel HorizontalAlignment="Left" Height="132" Margin="4,0,0,0" VerticalAlignment="Top" Width="462">
                <Grid HorizontalAlignment="Left" Height="128" Margin="10,0,0,0" Width="442">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="43*"/>
                        <RowDefinition Height="51*"/>
                        <RowDefinition Height="34*"/>
                    </Grid.RowDefinitions>
                    <Button x:Name="wplac" Content="Wplata" HorizontalAlignment="Left" Height="24" Margin="10,10,0,0" Grid.Row="2" VerticalAlignment="Top" Width="98" Click="wplac_Click"/>
                    <Button x:Name="wyplac" Content="Wyplata" HorizontalAlignment="Left" Height="24" Margin="317,10,0,0" Grid.Row="2" VerticalAlignment="Top" Width="98" RenderTransformOrigin="1.32,0.314" Click="wyplac_Click"/>
                    <TextBox x:Name="wpisanie" HorizontalAlignment="Left" Height="31" Margin="10,10,0,0" Grid.Row="1" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="422"/>
                    <Label Content="Saldo" HorizontalAlignment="Left" Height="33" Margin="10,10,0,0" VerticalAlignment="Top" Width="135"/>
                    <TextBox x:Name="saldowe" HorizontalAlignment="Left" Height="23" Margin="85,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="226"
                             Text="{Binding Path=saldo}" TextChanged="saldowe_TextChanged" Grid.Row="0"/>
                </Grid>
            </StackPanel>
        </GroupBox>
        <GroupBox x:Name="gbdostep" Header="dostep" HorizontalAlignment="Left" Height="123" Margin="23,10,0,0" Grid.Row="2" VerticalAlignment="Top" Width="482">
         <ListBox x:Name="lista" HorizontalAlignment="Left" Height="91" Margin="4,6,0,0" VerticalAlignment="Top" Width="462" SelectionChanged="lista_SelectionChanged" DisplayMemberPath="NumerSaldo" 
         FontSize="16" 
        FontStyle="Italic" FontStretch="Normal" Visibility="Visible" BorderBrush="#FF0B1229" OpacityMask="#FFB86666"/>
        </GroupBox>
    </Grid>
</Window>

kod XAML.CS

using System;
using System.Collections.Generic;
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;
using System.Collections.ObjectModel;

namespace saldo
{
    /// <summary>
    /// Logika interakcji dla klasy MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private List<Konto> konty = new List<Konto>();
        public MainWindow()
        {
            InitializeComponent();
            int licz = 0;
            Konto ko;

            konty.Add(new Konto("a",123,15.00));
            konty.Add(new Konto("b",456,20.00));
            konty.Add(new Konto("c",789,28.00));
            konty.Add(new Konto("d", 147, 30.00));

            lista.ItemsSource = konty;
            lista.Focus();
            lista.SelectedIndex = 0;
        }

        public void ok_Click(object sender, RoutedEventArgs e)
        {
            int k, licz=0;
            k = int.Parse(tnr.Text);
            /* foreach (Konto ko in konty)
                  if (k == ko.numerkonta)
                      licz++;
              if (licz >= 1)*/
            czy_istnieje(k);
            bool p=czy_istnieje(k);
            if(p==true)
                MessageBox.Show("juz jest");
            else
                MessageBox.Show("nie ma");
                    
               
            
        }

        public void lista_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            
        }

        public void wplac_Click(object sender, RoutedEventArgs e)
        {
            double qw;
            qw = double.Parse(wpisanie.Text);
            int  k = int.Parse(tnr.Text);
            foreach (Konto ko in konty)
                if (k == ko.numerkonta)
                    ko.Wplac(qw);
               
                
        }

        public void wyplac_Click(object sender, RoutedEventArgs e)
        {
            double qw;
            qw = double.Parse(wpisanie.Text);
            int k = int.Parse(tnr.Text);
            foreach (Konto ko in konty)
                if (k == ko.numerkonta)
                    ko.Wyplac(qw);
        }
        public bool czy_istnieje(int k)
        {
            foreach (Konto ko in konty)
                if (k == ko.numerkonta)
                    return true;
            return false;
        }

        private void saldowe_TextChanged(object sender, TextChangedEventArgs e)
        {

        }
    }
}

kod klasy

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace saldo
{
    class Konto
    {
        private int numer;
        private double saldo;
        string nazwa;

        
        public Konto(string nazw, int nr, double saldy)
        {
            nazwa = nazw;
            numerkonta = nr;
            saldo = saldy;
        }
        public int numerkonta { get; set; }
        public double saldy { get;  }
        public double Wplac(double kwota)
        {
            saldo += kwota;
            return saldo;
        }
        public double Wyplac(double kwotw)
        {
            saldo -= kwotw;
            return saldo;
        }
        public string NumerSaldo
        {
            get
            {
                string nrk = numerkonta.ToString();
                string sald = saldo.ToString();
                return nazwa + " " + nrk + " " + sald;
            }
        }

    }
}