Skip to content
On this page

双向绑定

到目前为止,我们已经将数据绑定视为保持用户界面元素最新的一种方式。然而,更常见的是需要更新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()
}

接下来,我们将研究如何在数据中添加转换。