使用一类变量自动更新文本框

本文关键字:更新 文本 类变量 | 更新日期: 2023-09-27 18:27:29

我正在尝试在C#WPF中执行以下操作:

我有两个名为Window1Window2的窗口。

Window1是一个控制接口,它接收来自不同来源的数据,如UDP、数据库或手动输入;数据随后被"发送"到CCD_ 6以在CCD_。假设Window2中总共有50个文本框。我创建了一个类(DataSet1),其中包含50个不同类型的变量(Int16Int32DoubleString等)。

Window2具有包含在Window1中的类DataSet1的局部声明。我想收集Window1中的数据,然后将其分配给Window2。这将在Window1中执行类似于Window2.dataSet1 = dataSet1的操作。在接收到新数据后,Window2中的TextBox需要根据任何已更改的数据进行更新(或者可能只是更新所有数据)。

现在我知道我可以在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"/>

使用一类变量自动更新文本框

两个选项

  1. 它们真的需要50个文本框吗?你能创建一个显示为GridView的ListView吗?它与数据集有绑定

    http://www.c-sharpcorner.com/uploadfile/mahesh/gridview-in-wpf/

  2. 另一种选择是在结果或Window1准备好后,在Window2上用程序创建控件,并用foreach或类似的分配其值

好吧,我终于弄明白了,它起作用了。当传入变量类时,我编写了特定的过程,触发更新所有文本框。最后的代码看起来是这样的。

public String RemoteTestBinding
{
    get { return "Value to return"; }
}

每个绑定的文本框都已正确更新。