绵阳网站建设,wordpress主题导致空白,我有服务器和模板怎么做网站,学校机构网站建设内容绑定表达式#xff08;Binding expression#xff09;并不是新概念#xff0c;XAML和Flex开发者主要就依靠这个。但除C/CX#xff08;只用于WinRT编程#xff09;之外#xff0c;原生编程语言中通常见不到这种概念。不过为VCL和FireMonkey设计的LiveBindings却是个例外。…绑定表达式Binding expression并不是新概念XAML和Flex开发者主要就依靠这个。但除C/CX只用于WinRT编程之外原生编程语言中通常见不到这种概念。不过为VCL和FireMonkey设计的LiveBindings却是个例外。\u0026#xD;\n我们先来介绍一些背景知识。VCLVisual Component Library是Delphi和C Builder都支持的老式UI框架。它支持x86和x64模式但只能运行在Windows操作系统上。FireMonkey在新的应用程序中代替了VCL。它既支持Windows也支持OS X。FileMonkey和VCL可用于同一应用程序中不过不能用于同一模块中。\u0026#xD;\n据Embarcadero介绍\u0026#xD;\n\u0026#xD;\nLiveBindings基于称作绑定表达式的关系表达式既可以是单向的也可以是双向的。LiveBindings还包括控制对象和源对象。借助绑定表达式任何对象都可以绑定到其他任何对象只需要定义包含所要绑定对象的一个或多个属性的绑定表达式。例如可以把一个Tedit控件绑定到一个Tlabel这样当编辑框中的文本改变时标签的标题也会根据绑定表达式计算而得的值自动调整。再举一个例子把轨迹条控件绑定到进度条拖动轨迹条时进度条也可以相应变化。\u0026#xD;\n\u0026#xD;\n和很多Delphi/C Builder工具类似LiveBindings通常使用GUI工具创建。这里有两种选择LiveBindings Designer和LiveBindings Wizard。这无疑会让习惯于手工编辑XAML或Flex的绑定表达式的开发者不爽。\u0026#xD;\n请注意以编程方式编辑绑定是可能的但强烈建议不要这么做。这方面的文档深埋在一个关于控制台应用的教程中。\u0026#xD;\n与.NET中要求对象实现某些复杂的设计模式不同Delphi和C Builder中的对象默认就是可绑定的。几乎和所有对象一样只需要继承TObject然后像正常情况一样暴露出属性。对C Builder而言这意味着要使用__property扩展关键字。\u0026#xD;\n实际应用绑定表达式的代码非常繁琐不过确实能支持复杂表达式。在下面的例子中我们可以看到表达式“o1.IntegerValue o2.IntegerValue”被绑定到了MyResultObject.IntegerValue属性。\u0026#xD;\n\u0026#xD;\n在XAML技术中绑定表达式是基于事件的。为避免内存泄漏它们在内部使用了一个“弱事件weak events”结构来监控需要通过绑定表达式转发relay 的PropertyChanged事件。该结构要求所有绑定集中注册不过事实上大多数开发者并没有意识到这一点。\u0026#xD;\nLiveBindings缺乏属性变更事件这一概念因此要进行类似的抽象就不可能了。 虽然Bindings仍然是集中注册的但属性变更时需要显式通知绑定引擎。这通过Tbindings.Notify函数完成该函数接受对象和属性名。\u0026#xD;\n理论上TBindings.Notify函数可由属性setter调用而无需客户端代码显式调用。虽然文档没有介绍但这又带来了多线程相关问题不过确实消除了对弱事件的需求。\u0026#xD;\n参考英文原文A Look at LiveBindings for C and Delphi