我正在尝试在C#
and中执行以下操作WPF
:
我有两个称为Window1
和的窗口Window2
。
Window1
是一个控制接口,用于接收来自不同来源的数据,例如 UDP、数据库或手动输入;Window2
然后将数据“发送”到Text Boxes
. 假设总共有 50 个文本框Window2
。我DataSet1
创建了一个类 ( ),其中包含 50 个不同类型的变量(Int16
、Int32
、Double
、String
等)。
Window2
具有.DataSet1
中包含的类的本地声明Window1
。我想收集数据,Window1
然后将其分配给Window2
. 这将是Window2.dataSet1 = dataSet1
从内部完成的Window1
。收到新数据后,Window2
需要根据任何已更改的文本框进行更新(或者可能只是更新所有这些数据)。
现在我知道我可以在 Window1 中进行 50 次赋值,例如Window2.TextBox1 = dataSet1.Variable1.ToString()
,Window2.TextBox2 = dataSet1.Variable2.ToString()
等。我只想使用一个赋值语句来完成此操作,该语句基本上将类变量从一个窗口复制到另一个窗口。
我想我必须实施INotifyPropertyChanged
,但我不知道如何TextBoxes
在多个字段更改上更新多个。
好的,听起来没有人可以处理这个,或者我没有说清楚,所以我添加了一些代码来尝试说明。通过学习和遵循一些示例,我确实得到了一些简单的绑定工作;但我仍然无法完成这项工作。
// Main control program
public partial class MainWindow : Window
{
Window1 window1 = new Window1();
TestBinding testBinding = new TestBinding();
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
// Just for testing make a button to click to simulate
// complex data processing
testBinding.Variable1 = 10;
testBinding.Variable2 = 20;
testBinding.Variable3 = 50;
window1.RemoteTestBinding = testBinding;
}
}
// Class module
public class TestBinding
{
public Int32 Variable1;
public Int32 Variable2;
public Int32 Variable3;
}
// One of several display pages
public partial class Window1 : Window, INotifyPropertyChanged
{
private String fun;
private TestBinding remoteTestBinding;
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(String propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public Window1()
{
InitializeComponent();
TestBinding remoteTestBinding = new TestBinding();
this.DataContext = this;
this.Show();
}
// Problem is here, how do I return a string for the bound label but pass in a class??????
public TestBinding RemoteTestBinding
{
get { return remoteTestBinding; }
set
{
remoteTestBinding = value;
this.OnPropertyChanged("RemoteTestBinding");
}
}
}
<Label Content="{Binding RemoteTestBinding}" Height="26" Width="10"/>