0

私は と で次のことをしようとしていC#ますWPF:

と という 2 つのウィンドウがWindow1ありWindow2ます。

Window1UDP、データベース、手動入力などのさまざまなソースからデータを受信する制御インターフェイスです。次に、データは に「送信」されWindow2て に表示されText Boxesます。で合計約 50 個のテキスト ボックスがあるとしWindow2ます。異なるタイプ ( 、、、など)DataSet1の 50 個の変数を含むクラス ( ) を作成しました。Int16Int32DoubleString

Window2DataSet1に含まれるクラスのローカル宣言がありWindow1ます。でデータを収集し、Window1に割り当てたいと考えていWindow2ます。Window2.dataSet1 = dataSet1これは、 内からのように行われますWindow1。新しいデータを受信すると、必要な TextBox は、Window2変更されたものに基づいて更新する必要があります (または、すべてを更新するだけかもしれません)。

Window2.TextBox1 = dataSet1.Variable1.ToString()これで、 Window1 内で、 などの 50 の割り当てを実行できることがわかりましWindow2.TextBox2 = dataSet1.Variable2.ToString()た。クラス変数を 1 つのウィンドウから別のウィンドウに基本的にコピーする 1 つの割り当てステートメントでこれを実行したいだけです。

実装する必要があると思いますが、複数のフィールドの変更を複数INotifyPropertyChanged更新する方法がわかりません。TextBoxes

OK、誰もこれを処理できないか、私が自分自身を明確にしていないように聞こえるので、試して説明するためにいくつかのコードを追加しています. いくつかの例を調べて従うことで、機能するための簡単なバインドを取得しました。しかし、私はまだこの仕事をするのに途方に暮れています。

// 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"/>
4

2 に答える 2

0

2 つのオプション

  1. それらは本当に 50 個のテキストボックスである必要がありますか? データセットへのバインディングを持つ GridView として表示される ListView を作成できますか

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

  2. 他のオプションは、結果または Window1 の準備ができた後に Window2 でプログラムによってコントロールを作成し、その値をforeachまたは同様のもので割り当てることです。

于 2013-08-13T22:24:17.133 に答える