新聞中心
WPF開(kāi)發(fā)是近年來(lái)非常流行的一種桌面應(yīng)用程序開(kāi)發(fā)技術(shù),它可以幫助開(kāi)發(fā)人員快速、高效地創(chuàng)建充滿(mǎn)交互性和美觀的應(yīng)用程序。在WPF開(kāi)發(fā)中,窗口的嵌套是非常常見(jiàn)的操作,而子窗口與父窗口之間的信息傳遞則更是必不可少的。本文將介紹一個(gè)常見(jiàn)的WPF開(kāi)發(fā)場(chǎng)景——如何在子窗口中操作數(shù)據(jù)庫(kù),然后將數(shù)據(jù)傳遞給父窗口。

一、創(chuàng)建子窗體和父窗體
在WPF開(kāi)發(fā)中,我們首先需要進(jìn)行的操作就是創(chuàng)建一對(duì)子窗體和父窗體。首先創(chuàng)建一個(gè)子窗體,例如我們創(chuàng)建一個(gè)名為ChildWindow的子窗體。在Visual Studio中新建一個(gè)WPF Application項(xiàng)目,在項(xiàng)目中創(chuàng)建一個(gè)名為ChildWindow.xaml的文件,然后在文件中添加如下樣式:
“`
xmlns=”http://schemas.microsoft.com/winfx/2023/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2023/xaml”
Title=”ChildWindow” Height=”300″ Width=”300″>
“`
在這里,我們創(chuàng)建了一個(gè)TextBox和一個(gè)Button,用戶(hù)可以在TextBox中輸入數(shù)據(jù),然后通過(guò)單擊Button將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。
接下來(lái),我們?cè)賱?chuàng)建一個(gè)父窗體,例如我們創(chuàng)建一個(gè)名為ParentWindow的父窗體。在Visual Studio中新建一個(gè)WPF Application項(xiàng)目,在項(xiàng)目中創(chuàng)建一個(gè)名為ParentWindow.xaml的文件,然后在文件中添加如下樣式:
“`
xmlns=”http://schemas.microsoft.com/winfx/2023/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2023/xaml”
Title=”P(pán)arentWindow” Height=”300″ Width=”300″>
“`
在這里,我們創(chuàng)建了一個(gè)Button和一個(gè)ListView,用戶(hù)可以通過(guò)單擊Button打開(kāi)一個(gè)ChildWindow子窗體,在ListView中顯示保存到數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
二、創(chuàng)建數(shù)據(jù)庫(kù)
接下來(lái),我們需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù)并將其與我們的項(xiàng)目關(guān)聯(lián)起來(lái)。在Visual Studio中右鍵單擊項(xiàng)目名稱(chēng),選擇“添加”->“新建項(xiàng)”,然后選擇“數(shù)據(jù)庫(kù)”并添加一個(gè)名為T(mén)estDB.mdf的數(shù)據(jù)庫(kù)。
三、將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中
在這個(gè)場(chǎng)景中,我們需要將用戶(hù)輸入的數(shù)據(jù)保存到TestDB數(shù)據(jù)庫(kù)中。我們需要在ChildWindow.xaml.cs文件中添加以下代碼:
“`
private void Button_Click(object sender, RoutedEventArgs e)
{
using (var conn = new SqlConnection(“Data Source=(LocalDb)\\v11.0;Initial Catalog=TestDB;Integrated Security=True”))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = “insert into TestTable values(@name)”;
cmd.Parameters.AddWithValue(“@name”, txtName.Text);
cmd.ExecuteNonQuery();
}
}
}
“`
在這里,我們使用SqlConnection連接字符串與TestDB數(shù)據(jù)庫(kù)建立連接,并使用SqlCommand對(duì)象將輸入的數(shù)據(jù)存儲(chǔ)到TestTable表中。
四、將數(shù)據(jù)傳遞給父窗口
接下來(lái),我們需要將剛剛保存到數(shù)據(jù)庫(kù)中的數(shù)據(jù)傳遞給父窗口。我們需要在ParentWindow.xaml.cs文件中添加以下代碼:
“`
private void Button_Click(object sender, RoutedEventArgs e)
{
var childWindow = new ChildWindow();
childWindow.ShowDialog();
using (var conn = new SqlConnection(“Data Source=(LocalDb)\\v11.0;Initial Catalog=TestDB;Integrated Security=True”))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = “select * from TestTable”;
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
lvData.Items.Add(new { Name = reader[“name”].ToString() });
}
}
}
}
}
“`
在這里,我們首先使用子窗體的ShowDialog()方法打開(kāi)ChildWindow窗體。在子窗體被關(guān)閉之后,我們使用SqlCommand對(duì)象查詢(xún)TestTable表的數(shù)據(jù),并將數(shù)據(jù)添加到ListView控件中。
五、
通過(guò)以上操作,我們成功實(shí)現(xiàn)了在WPF開(kāi)發(fā)中通過(guò)子窗體傳遞數(shù)據(jù)庫(kù)給父窗體的操作。在實(shí)際開(kāi)發(fā)中,這個(gè)場(chǎng)景是非常常見(jiàn)的,也是我們?cè)陂_(kāi)發(fā)WPF應(yīng)用程序時(shí)需要掌握的基本技能之一。這需要我們熟練掌握WPF開(kāi)發(fā)中窗口和控件的關(guān)系,并且了解如何在不同的窗體之間進(jìn)行數(shù)據(jù)傳遞和交互。只有在熟練掌握這些基本技能之后,我們才能開(kāi)發(fā)出高效、穩(wěn)定、充滿(mǎn)交互性和美觀的WPF應(yīng)用程序。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
WPF中MVVM子窗口修改數(shù)據(jù)問(wèn)題
這么說(shuō)吧,wpf里的數(shù)據(jù)綁定就是給數(shù)據(jù)源(source)亮喚和顯示數(shù)據(jù)的綁定對(duì)象(target)洞鍵敗建立一個(gè)關(guān)系。綁定模式呢一般有單向綁定和雙向綁定的(默認(rèn)為單向綁定,且當(dāng)數(shù)據(jù)源實(shí)現(xiàn)INotifyPropertyChanged接口時(shí),數(shù)據(jù)源改變可以導(dǎo)致前臺(tái)顯示改變)如果是雙向綁定呢,source和target只要有一方改變,另外一方也會(huì)隨之改變。樓主的例子中兩個(gè)窗口都是target,而父窗口列表里selectedItem和子窗口的文本框綁定的應(yīng)該是viewModel里同一個(gè)對(duì)象。當(dāng)子窗口target發(fā)生更改,它會(huì)通知到viewModel這個(gè)source,然后這個(gè)source呢,就會(huì)通知到主窗口這個(gè)target。啊,對(duì)了,一般情況下呢,觸發(fā)數(shù)據(jù)變化是“失去焦點(diǎn)”,就是你所謂的點(diǎn)擊確定按鈕讓子窗口文本框失去焦點(diǎn)的情況下。但如果在綁定的時(shí)候有設(shè)置UpdateSourceTrigger=PropertyChanged,那就會(huì)實(shí)現(xiàn)實(shí)時(shí)更改數(shù)據(jù)納顫了。
這就是綁定掘談的強(qiáng)大之處?;蛘哒f(shuō)它睜數(shù)們本來(lái)用的就是同一個(gè)數(shù)據(jù)源。要想點(diǎn)確定再觸判早碰發(fā),則要改變子窗口的數(shù)據(jù)綁定對(duì)象。
C#如何將多個(gè)窗口中的STRING字符串傳遞到主窗口上的listbox去
看你子窗口是賣(mài)啟如何傳遞了、
如果是子窗口關(guān)閉時(shí),參數(shù)傳遞到父窗體,可以使用構(gòu)造函數(shù)。
在子窗口寫(xiě)構(gòu)造函數(shù):
public MyForm(string str)
{
//子窗口初始化 然后把str綁定給你子窗口的控渣橘件
}
Winform或者WPF調(diào)用子窗口一般都是
string str = “”;
var mf = new MyForm(str);
mf.ShowDialog(); //或者show();
當(dāng)子窗口關(guān)閉的時(shí)候 會(huì)返回子窗口改變后的str。
如果是子窗口不關(guān)閉,就要往回傳遞值,可以使用全局變量
public static string str{set;get;}
如果希望自動(dòng)刷新,更好使用委托進(jìn)行回調(diào),會(huì)比較麻煩,可以看一下msdn的例子。
listbox中提供 Items.Add()方法,向里面添加參數(shù)。
C#代碼要在VS中才能編譯運(yùn)行,你連實(shí)際的項(xiàng)目都沒(méi)有,也沒(méi)有給實(shí)現(xiàn)的技術(shù)。
要是需要能運(yùn)行的程序建議你如配團(tuán)直接上某寶去買(mǎi)。
listBox1.Items.Add(參數(shù));
關(guān)于wpf 子窗口向父窗口傳數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開(kāi)發(fā),網(wǎng)站建設(shè),咨詢(xún)熱線:028-86922220
當(dāng)前文章:【W(wǎng)PF開(kāi)發(fā)】子窗口傳遞數(shù)據(jù)庫(kù)給父窗口(wpf子窗口向父窗口傳數(shù)據(jù)庫(kù))
轉(zhuǎn)載源于:http://www.5511xx.com/article/dpdjiih.html


咨詢(xún)
建站咨詢(xún)
