使用实时绑定将多个字段值分配给 FMX MetropolisUI TListBox Item.Text

Using Livebindings to Assign Several Field Values to an FMX MetropolisUI TListBox Item.Text

我正在编写一个 FMX Metropolis UI 应用程序,并尝试通过 LiveBindings 技术(使用表达式引擎)将两个字符串类型的字段值分配给 TListBox 的 Item.Title 成员。

当我按以下方式使用 TBindList 时:

object BindList1: TBindList
  Category = 'Lists'
  ControlComponent = ListBox1
  SourceComponent = BindSourceDB1
  FormatExpressions = <
    item
      ControlExpression = 'Text'
      SourceExpression =
        'FieldByName("name1").Text + " " + Field' +
        'ByName("name2").Text'
    end>
  FormatControlExpressions = <>
  ClearControlExpressions = <>
end 

它将 'name1 name2' 字符串分配给成员 Text 但我无法设置 ListItemStyle := MetropolisUI 因为在 TBindList class 中没有这样的 属性

如果我用TLinkFillControlToField

object LinkFillControlToField2: TLinkFillControlToField
      Category = 'Quick Bindings'
      Control = ListBox1
      Track = True
      FillDataSource = BindSourceDB1
      FillDisplayFieldName = 'name1'
      AutoFill = True
      BufferCount = -1
      AutoBufferCount = False
      FillExpressions = <>
      FillHeaderExpressions = <>
      FillBreakGroups = <>
    end

它让我可以将 ListItemStyle 分配给 MetropolisUI,但是我只能使用 FillDisplayFieldName 属性 访问一个字段并且没有 SourceExpression 字段分配 'FieldByName("name1").Text + " " + FieldByName("name2").Text' 给它。

我试图从 TBindList 猜测 TListBoxItem.Text 成员的上下文,但我没有成功。我研究了 Delphi 个样本,但没有 Metropolis TListBox,它的行为方式似乎与普通的不同。有人知道如何找到解决此问题的方法吗?

感谢@house-of-dexter 的 post 他给了一个关于 TLabel 鼓励我再次尝试 TLinkFillControlToField。主要问题是可以在 Self.Owner.

中找到字段名的上下文
object LinkFillControlToField2: TLinkFillControlToField
  Category = 'Quick Bindings'
  DataSource = BindSourceDB1
  Control = ListBox1
  Track = True
  FillDataSource = BindSourceDB1
  AutoFill = True
  BufferCount = -1
  AutoBufferCount = False
  ListItemStyle = 'MetropolisUI'
  FillExpressions = <
    item
      SourceMemberName = 'name1'
      ControlMemberName = 'Title'
      CustomFormat = 'Self.Owner.name1.text+" "+Self.Owner.name2.text'
    end>
  FillHeaderExpressions = <>
  FillBreakGroups = <>
end