C#WPF在变量更改或按钮单击时在两个窗口之间传递数据
我目前正在使用WPF进行一个C语言的小项目,我需要在两个窗口之间传递数据(如下所示)。我可以使用类传递数据,但我想在C#WPF在变量更改或按钮单击时在两个窗口之间传递数据,c#,.net,wpf,C#,.net,Wpf,我目前正在使用WPF进行一个C语言的小项目,我需要在两个窗口之间传递数据(如下所示)。我可以使用类传递数据,但我想在文本框“Tb_kunden_id”(窗口一)中显示数据,点击“Btn_kunde_hinzufügen click”(窗口二)或者每当变量“kunden\u id\u chaged”(变量在类中)更改时。数据的输入在项目列表中单击按钮(Btn\u kunde\u hinzufügen\u单击按钮)时更改。是否需要添加XAML 窗口1: public partial class be
文本框“Tb_kunden_id”
(窗口一)中显示数据,点击“Btn_kunde_hinzufügen click”
(窗口二)或者每当变量“kunden\u id\u chaged”
(变量在类中)更改时。数据的输入在项目列表中单击按钮(Btn\u kunde\u hinzufügen\u单击按钮)时更改。是否需要添加XAML
窗口1:
public partial class bestellung_hinzufügen : Window
{
string login = Login_info.login;
string datum = "";
int m_id_auslesen = 0;
public bestellung_hinzufügen()
{
InitializeComponent();
NpgsqlConnection connection = new NpgsqlConnection(login);
try
{
connection.Open();
}
catch
{
MessageBox.Show("faild");
}
//Some SQL in here
}
private void Btn_kunde_suchen_Click(object sender, RoutedEventArgs e)
{
//I am opening the Window for new Input
Auswahl_kunde_bestellung auswahl_Kunde_Bestellung = new Auswahl_kunde_bestellung();
auswahl_Kunde_Bestellung.Show();
}
private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
//Class that passes the data between different windows
public static class Informationen_bestellungen
{
public static string kunden_id;
public static bool kunden_id_chaged = false;
}
public partial class Auswahl_kunde_bestellung : Window
{
string login = Login_info.login;
string suchanfrage = "";
public Auswahl_kunde_bestellung()
{
InitializeComponent();
}
private void Btn_suchen_Click(object sender, RoutedEventArgs e)
{
//What I am adding to the list
suchanfrage = Tb_suchanfrage_kunde.Text;
Liste_ausgabe_kunden.Items.Clear();
if (Combo_auswahl_kunde.SelectedIndex == 0)
{
string command_text = "select * from tbl_kunde where k_id >= '" + suchanfrage + "' order by k_id;";
Ausgabe_kunde(command_text);
}
if (Combo_auswahl_kunde.SelectedIndex == 1)
{
string command_text = "select * from tbl_kunde where name like '" + suchanfrage + "%' order by k_id;";
Ausgabe_kunde(command_text);
}
}
//Where I want it to update
private void Btn_kunde_hinzufügen_Click(object sender, RoutedEventArgs e)
{
if (Liste_ausgabe_kunden.SelectedIndex != -1)
{
string delete = Liste_ausgabe_kunden.SelectedItem.ToString();
string[] split_delete = delete.Split();
//the next line I want to show in the TextBox
Informationen_bestellungen.kunden_id = split_delete[0];
Informationen_bestellungen.kunden_id_chaged = true;
//Where the TextBox should be changed
this.Close();
}
}
private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void Ausgabe_kunde(string command_text)
{
//Some more SQL
}
}
窗口2:
public partial class bestellung_hinzufügen : Window
{
string login = Login_info.login;
string datum = "";
int m_id_auslesen = 0;
public bestellung_hinzufügen()
{
InitializeComponent();
NpgsqlConnection connection = new NpgsqlConnection(login);
try
{
connection.Open();
}
catch
{
MessageBox.Show("faild");
}
//Some SQL in here
}
private void Btn_kunde_suchen_Click(object sender, RoutedEventArgs e)
{
//I am opening the Window for new Input
Auswahl_kunde_bestellung auswahl_Kunde_Bestellung = new Auswahl_kunde_bestellung();
auswahl_Kunde_Bestellung.Show();
}
private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
//Class that passes the data between different windows
public static class Informationen_bestellungen
{
public static string kunden_id;
public static bool kunden_id_chaged = false;
}
public partial class Auswahl_kunde_bestellung : Window
{
string login = Login_info.login;
string suchanfrage = "";
public Auswahl_kunde_bestellung()
{
InitializeComponent();
}
private void Btn_suchen_Click(object sender, RoutedEventArgs e)
{
//What I am adding to the list
suchanfrage = Tb_suchanfrage_kunde.Text;
Liste_ausgabe_kunden.Items.Clear();
if (Combo_auswahl_kunde.SelectedIndex == 0)
{
string command_text = "select * from tbl_kunde where k_id >= '" + suchanfrage + "' order by k_id;";
Ausgabe_kunde(command_text);
}
if (Combo_auswahl_kunde.SelectedIndex == 1)
{
string command_text = "select * from tbl_kunde where name like '" + suchanfrage + "%' order by k_id;";
Ausgabe_kunde(command_text);
}
}
//Where I want it to update
private void Btn_kunde_hinzufügen_Click(object sender, RoutedEventArgs e)
{
if (Liste_ausgabe_kunden.SelectedIndex != -1)
{
string delete = Liste_ausgabe_kunden.SelectedItem.ToString();
string[] split_delete = delete.Split();
//the next line I want to show in the TextBox
Informationen_bestellungen.kunden_id = split_delete[0];
Informationen_bestellungen.kunden_id_chaged = true;
//Where the TextBox should be changed
this.Close();
}
}
private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void Ausgabe_kunde(string command_text)
{
//Some more SQL
}
}
提前感谢!您可能还需要其他东西,因此请准备好您的设计。为主窗口创建一个ViewModel,此ViewModel将协调其他窗口的两个ViewModel之间的数据传递。是的,请使用XAML和数据绑定,因为这是WPF的功能所在。添加代码块s到段落内的代码