SmartBinding与kbmMW#2

 

前言

在之前的文章中,我介绍了SmartBinding作为Delphi的一个新的易于使用和智能的绑定框架。介绍了包括绑定对象,列表,常规数据和可视控件,以及如何使用导航器,所有这些都用代码做了演示。

本文将重点关注下一个kbmMW版本中包含的新SmartBinding功能(SmartBinding v2),预计很快就会发布。

绑定一行代码

使kbmMW的“智能”功能更加智能的原因在于它们专注于删除所有样板代码,从而可以轻松关注实际的功能需求。通过代码执行SmartBinding非常简单......但它可以更容易实现,下面的演示将显示。

 

我做了一个简单的表单,包含一个TLabel,一个TButton和两个TEdits。

我们试着运行它:

当我输入Edit3(顶部编辑框)时,其余控件的标题和文本会自动更新。那不是真的很新......我已经在之前的SmartBinding博客文章中展示了这一点..不是吗?

嗯...是的......没有...... 在之前的博客文章中,有许多Binding.Bind ...行将控件绑定在一起。

在此示例中,TForm的OnCreate事件中只有一行代码:

     Binding.AutoBind(self);

怎么可能?kbmMW SmartBinding现在能够检查对象和控件的字符串属性,以获取绑定指令。

Label.Caption属性中可以清楚地看到一个绑定指令:{Edit3.Text}

只需将文本放在那里,Label就会与控件Edit3.Text属性绑定,来接收数据。该按钮的绑定方式与Edit3相同。第二个TEdit也绑定到Edit3,但在这里进行了双向绑定:{Edit3.Text,twoway:true}

因此,现在可以直观地看到控件至少从哪里获取可视数据。

Multibinding

这种方法的问题在于,似乎无法绑定非字符串类型属性。但幸运的是,这也有一个很好的解决方案。您不仅限于绑定到字符串属性本身,您可以通过字符串属性绑定任何内容。

这将我们带到演示应用程序的第二页。

这显示了如何在一个字符串属性中指定多个绑定。TButton控件的Caption属性现在包含一个包含2个绑定的数组,一个是Edit1.Text绑定到Label2.Caption,另一个是Edit1.Text绑定到Label1.Caption。键入Edit1将按预期更新两个标签。

您可能会注意到该按钮现在不是最终用户友好的,因为我们(错)使用其标题来包含绑定数组。这很容易通过以下方法之一解决:

  1. 不要使用TButton.Caption进行绑定,而是使用在运行时不可见的其他字符串属性
  2. 将TButton.Caption绑定到产生您想要看到的内容的东西上
  3. 使用值语法

值语法只是添加一个带有值的绑定:

[{value:"Button"},{bind:Edit1.Text, to:Label2.Caption}, { bind: Edit1.Text, to: Label1.Caption}]

运行后的结果:

按钮现在有一个很好的标签。我们使用常量字符串作为值,但我们也可以使用对配置条目的引用。请参阅有关kbmMW配置管理器的博客

通过将exprToSrc:“expression”和/或exprToDest:“expression”字符串属性添加到相关绑定部分,也可以指定目标和源表达式通过设置disabled:true,可以将绑定设置为默认禁用

猜你喜欢

转载自www.cnblogs.com/kinglandsoft/p/10924982.html
今日推荐