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;
}
}
}
}