LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-11
動作環境
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を変更すると以下のエラーが出る。

2017-06-11_09h56_29.png

GetBinding()した変数を用いてUpdateSourceTrigger を変更することはできないようだ。
そのためnew Binding()していると理解した。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0