在我的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