- 73 名前:69 mailto:sage [2017/05/26(金) 00:22:39.18 ID:FoMmFfzc.net]
- しかし、この状態で
private void testButton_Click(object sender, RoutedEventArgs e) { testString = "push Button"; // 以下を追加 Binding bind = new Binding("testString"); bind.Source = this; this.testTextBox.SetBinding(TextBox.TextProperty, bind); } とするとテキストボックスは更新されました。 XAML側のBinding指定はコンストラクタなど各ウインドウ?が生成される時にしか有効ではないのでしょうか? それ以後Bindされているオブジェクトが新しくなる場合は、再度バインドしなおさなくてはならないのでしょうか? 自分の理解では、 オブジェクトが更新された場合の内部挙動はBindingで所持しているプロパティパスを DataContextからFindして該当プロパティの値を参照する、というようなイメージだったのですが、 どうもこの挙動をみていると、該当プロパティを見つけるところまでは同じですが、 見つけた後、プロパティの中に入っているオブジェクトそのものだけを記憶しているように感じます。 C++的な書き方をするなら class MainWindow { string* testString; } // 想定していた挙動 string*& bind_property = MainWindow.testString; // 実際の挙動 string* bind_property = MainWindow.testString; みたいな感じですかね。新規オブジェクトのアドレスが代入されるけど、バインドは旧オブジェクトのアドレスをみているようなイメージ。
|

|