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}
}
これで、新しいウィンドウを開く関数も用意されました。このウィンドウには、メインウィンドウのデータコンテキストにテキストをバインドするテキストボックスが含まれています。
private void MenuComm_Click(object sender, RoutedEventArgs e)
{
FrmSettings newWindow = new FrmSettings();
newWindow.DataContext = mMeasConSettings;
newWindow.TxtComm.Text = mMeasConSettings.CommSettings;
newWindow.Show();
}
このコードは newWindow からのテキスト ボックスに適切なコンテンツを入力しますが、テキスト ボックス (新しく作成されたウィンドウの TxtComm) 内のテキストを変更した後にデータ コンテキストが更新されないため、バインドされたプロパティは取得されません。
テキスト ボックスの XAML コードの例:
<TextBox Grid.Row="1" Grid.Column="3" Margin="2,0" Name="TxtComm" DataContext="{Binding Path=CommSettings, UpdateSourceTrigger=PropertyChanged}" />
「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";
}
}
私の問題は、newWindow (ボタンを押した後に作成される) の値 mMeasConSettings.CommSettings (MainWindow で定義) を調整する方法です。変更されます。
PS: 私は WPF が初めてなので、どんなアドバイスも大歓迎です!