私は と で次のことをしようとしていC#
ますWPF
:
と という 2 つのウィンドウがWindow1
ありWindow2
ます。
Window1
UDP、データベース、手動入力などのさまざまなソースからデータを受信する制御インターフェイスです。次に、データは に「送信」されWindow2
て に表示されText Boxes
ます。で合計約 50 個のテキスト ボックスがあるとしWindow2
ます。異なるタイプ ( 、、、など)DataSet1
の 50 個の変数を含むクラス ( ) を作成しました。Int16
Int32
Double
String
Window2
DataSet1
に含まれるクラスのローカル宣言があり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"/>