Visual Studio / WPF > Error: System.InvalidOperationException: 'バインドを、使用した後に変更することはできません。'


動作環境
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()していると理解した。