動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
http://gushwell.ldblog.jp/archives/52334874.html
を元に学習中。
private void ChangeUpdateSourceTrigger(TextBox textBox, string name) {
Binding binding = BindingOperations.GetBinding(textBox1, TextBox.TextProperty);
BindingOperations.SetBinding(textBox, TextBox.TextProperty,
new Binding(name) {
Mode = BindingMode.TwoWay,
UpdateSourceTrigger = _myObject.UpdateSourceTrigger
});
}
の部分においてGetBinding()したbindingを使っていない部分が気になった。
使うようにしてみた。
private void ChangeUpdateSourceTrigger(TextBox textBox, string name)
{
// 1. original
//Binding binding = BindingOperations.GetBinding(textBox1, TextBox.TextProperty);
//BindingOperations.SetBinding(textBox, TextBox.TextProperty,
// new Binding(name)
// {
// Mode = BindingMode.TwoWay,
// UpdateSourceTrigger = _myObject.UpdateSourceTrigger
// });
// 2. 変更
Binding bnd = BindingOperations.GetBinding(textBox, TextBox.TextProperty);
bnd.UpdateSourceTrigger = _myObject.UpdateSourceTrigger;
BindingOperations.SetBinding(textBox, TextBox.TextProperty, bnd);
}
実行してComboBoxを変更すると以下のエラーが出る。
GetBinding()した変数を用いてUpdateSourceTrigger を変更することはできないようだ。
そのためnew Binding()していると理解した。