双向绑定
到目前为止,我们已经将数据绑定视为保持用户界面元素最新的一种方式。然而,更常见的是需要更新UI小部件中的值,并使数据始终保持最新。幸运的是,Fyne中提供的绑定是“双向”的,这意味着可以将值推入其中,也可以将值读出。数据更改将传达给所有连接的代码,而无需任何附加代码。
要看到这一点,我们可以更新最后一个测试应用程序,以显示绑定到相同值的标签和条目。通过设置此选项,您可以看到通过条目编辑值也会更新标签中的文本。这一切都是可能的,无需调用刷新或引用代码中的小部件。
通过移动应用程序以使用数据绑定,您可以停止保存指向所有小部件的指针。通过将数据捕获为一组绑定值,用户界面可以是完全独立的代码。易于阅读和管理。
go
package main
import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/data/binding"
"fyne.io/fyne/v2/widget"
)
func main() {
myApp := app.New()
w := myApp.NewWindow("Two Way")
str := binding.NewString()
str.Set("Hi!")
w.SetContent(container.NewVBox(
widget.NewLabelWithData(str),
widget.NewEntryWithData(str),
))
w.ShowAndRun()
}
接下来,我们将研究如何在数据中添加转换。