将多个源属性绑定到 Vala 中的目标属性?

问题描述 投票:0回答:1

假设我有一个名为

BindingGroup
的 GLib
location_binds
,它具有属性
city-name
country-name
。我想要拥有一个包含“城市名称、国家名称”之类的属性。

我知道为了绑定一个属性,我可以使用

location_binds.bind ("city-name", this, "title", SYNC_CREATE)
(在这种情况下“标题”将包含“城市名称”)。但是两个(或任何其他数量)的属性怎么样?

glib vala
1个回答
0
投票

我最终的解决方案是使用两个变量。第一个正常绑定:

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);
});
© www.soinside.com 2019 - 2024. All rights reserved.