Enr*_*ico 2 c# wpf datacontext window
在我的MainWindow中,我创建了一个包含不同设置的类的新实例.设置类的参数后,我将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}
}
Run Code Online (Sandbox Code Playgroud)
现在我还有一个打开一个新窗口的函数,这个窗口包含一个文本框,其文本应绑定到MainWindow的datacontext.
private void MenuComm_Click(object sender, RoutedEventArgs e)
{
FrmSettings newWindow = new FrmSettings();
newWindow.DataContext = mMeasConSettings;
newWindow.TxtComm.Text = mMeasConSettings.CommSettings;
newWindow.Show();
}
Run Code Online (Sandbox Code Playgroud)
此代码使用正确的内容填充newWindow的文本框,但由于在更改文本框中的文本(新创建的窗口中的TxtComm)后datacontext未更新,因此它不会受到限制.
文本框的XAML代码示例:
<TextBox Grid.Row="1" Grid.Column="3" Margin="2,0" Name="TxtComm" DataContext="{Binding Path=CommSettings, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)
"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";
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何调整我的newWindow中的值mMeasConSettings.CommSettings(在我的MainWindow中定义)(按下按钮后创建),如果我在newWindow中更改文本框值,则存储在mMeasConSettings.CommSettings中的值也应该改变了.
PS:我是WPF的新手,欢迎任何建议!
正如我在评论中所写,您需要将Text
您TextBox
的属性绑定到DataContext
要更新的属性.因此,您的XAML应该是这样的:
<TextBox ... Text="{Binding CommSettings, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)
请注意,我绑定Text
的属性TextBox
的财产CommSettings
你的DataContext
.你C#
点击事件的代码应该是:
private void MenuComm_Click(object sender, RoutedEventArgs e)
{
FrmSettings newWindow = new FrmSettings();
newWindow.DataContext = mMeasConSettings;
newWindow.Show();
}
Run Code Online (Sandbox Code Playgroud)
我们只需要在DataContext
这里设置.请注意,它将DataContext
传递给子元素,因此除非特别设置为其他元素,否则TextBox
它将与DataContext
其父元素相同.
归档时间: |
|
查看次数: |
6726 次 |
最近记录: |