在我的MainWindow中,我創建了一個包含不同設置的類的新實例。設置了類的參數後,我將datacontext =設置爲該類。從新創建的窗口訪問主窗口datacontext
public partial class MainWindow : Window
{
private MeasConSettings mMeasConSettings = new MeasConSettings();
public MainWindow()
{
InitializeComponent();
DataContext = mMeasConSettings;
}
private void MenuComm_Click(object sender, RoutedEventArgs e)
{// See code below}
}
現在我也有一個函數來打開一個新窗口,該窗口包含一個文本框是誰的文字應綁定到主窗口的datacontext的。
private void MenuComm_Click(object sender, RoutedEventArgs e)
{
FrmSettings newWindow = new FrmSettings();
newWindow.DataContext = mMeasConSettings;
newWindow.TxtComm.Text = mMeasConSettings.CommSettings;
newWindow.Show();
}
此代碼填寫在從右邊的內容newWindow文本框,但它並不會必然屬性格式,因爲在DataContext沒有得到(在新創建的窗口TxtComm)在文本框中更改文本後更新。
爲文本框中的XAML代碼的一個例子:
<TextBox Grid.Row="1" Grid.Column="3" Margin="2,0" Name="TxtComm" DataContext="{Binding Path=CommSettings, UpdateSourceTrigger=PropertyChanged}" />
「CommSettings」是MeasConsettings類的成員
public class MeasConSettings
{
private string mCommSettings;
public string CommSettings
{
get
{
return mCommSettings;
}
set
{
mCommSettings = value;
}
}
public MeasConSettings()
{
CommSettings = "Com5:19200,8,n,1";
}
}
我的問題是如何可以調整該值mMeasConSettings.CommSettings (在我的MainWindow中定義)在我的newWindow(它是按下按鈕後創建的),如果我改變我的newWindow中的文本框的值,存儲在mMeasConSettings.CommSettings中的值也應該改變。
PS:我是新來的WPF,所以任何建議,歡迎!
我看不到在您的代碼中創建的綁定。您需要將TextBox的Text屬性綁定到DataContext中的屬性,該屬性應該使用TwoWay綁定進行更改。你的帶有'TextBox'的XAML應該有' ''。 –
2013-03-21 14:05:24
@ odyss-jii將文本框的XAML更改爲 '工作! –
Enrico
2013-03-21 14:15:13
很高興能幫到你! – 2013-03-21 14:15:38