假设我有一个名为
BindingGroup
的 GLib location_binds
,它具有属性 city-name
和 country-name
。我想要拥有一个包含“城市名称、国家名称”之类的属性。
我知道为了绑定一个属性,我可以使用
location_binds.bind ("city-name", this, "title", SYNC_CREATE)
(在这种情况下“标题”将包含“城市名称”)。但是两个(或任何其他数量)的属性怎么样?
我最终的解决方案是使用两个变量。第一个正常绑定:
location_binds.bind ("country-name", this, "country_name", SYNC_CREATE);
但第二个与 lambda 表达式绑定,该表达式在其内容中包含第一个变量:
location_binds.bind_property ("city-name", this, "title", SYNC_CREATE, (binding, src, ref target) => {
string city_name = (string) src;
title = "%s, %s".printf (city_name, this.country_name);
target.set_string (title);
});