確かにあります。AppSettings
両方のウィンドウでプロパティを作成し、ウィンドウの作成時に のプロパティをウィンドウのプロパティにDependencyProprerties
バインドできます。つまり、SettingsWindow クラスでは次のようになります。Settings
Main
Settings
partial class SettingsWindow : Window {
public static readonly DependencyProperty AppSettingsProperty("AppSettings", typeof(AppSettings), typeof(SettingsWindow), new PropertyMetaData(null));
public AppSettings AppSettings {
get { return (AppSettings) GetValue(AppSettingsProperty); }
set { SetValue(AppSettingsProperty, value); }
}
}
次に、Main
ウィンドウ クラスのコード ビハインドで:
partial class MainWindow : Window {
public static readonly DependencyProperty AppSettingsProperty("AppSettings", typeof(AppSettings), typeof(MainWindow), new PropertyMetaData(null));
public AppSettings AppSettings {
get { return (AppSettings) GetValue(AppSettingsProperty); }
set { SetValue(AppSettingsProperty, value); }
}
private void ShowSettingsWindowButton_Click(object sender, RoutedEventArgs e ) {
SettingsWindow settingsWindow = new SettingsWindow();
Binding appSettingsBinding = new Binding("AppSettings");
appSettingsBinding.Source = this;
appSettingsBinding.Path = new PropertyPath( "AppSettings" );
appSettingsBinding.Mode = BindingMode.TwoWay;
BindingOperations.SetBinding( this, AppSettingsProperty, appSettingsBinding );
settingsWindow.ShowDialog();
}
}
このBinding
メカニズムにより、両方のオブジェクトのプロパティが同期されます。したがって、SettingsWindow
が開いているときに、あるクラスのプロパティの値を別のインスタンスに置き換えるSettingsWindows
と、 に変更が通知され、そのコピーが更新されます。