PyBinding:面向 XAML 的 Python 脚本

  • Jonathan Allen
  • 张龙

2010 年 2 月 5 日

话题:.NET语言 & 开发

WPF 开发者经常感到自己的选择太少了:要么使用的逻辑会污染 code-behind 文件,要么得编写值转换类,但通常情况下这些类重用的可能性非常小。PyBinding 则提供了另一种选择:在 XAML 中嵌入少量的脚本。

举个例子吧,假设有一个文本块,只有在绑定的属性不为 0 时才显示出来。通过 PyBinding,我们可以将 Visibility 属性绑定到 IronPython 代码片段上来达到这个目的。

<TextBlock Visibility="{p:PyBinding BooleanToVisibility($[.OpenIssues]>0)}">

BooleanToVisibilty 是个见名知意的 IronPython 函数,定义在应用的 StartupScript.py 文件中,而代码片段“($[.OpenIssues]”则会使用当前数据上下文中的 OpenIssues 属性。如果省略掉第一个点,它就会绑定到名为 OpenIssues 的控件上。

在测试过程中,我们发现 PyBinding 在 DLR 和 IronPython 加载时会有一些性能上的问题,一旦加载到内存中,PyBinding 和完全编译的值转换器之间则没有什么差别。

PyBinding位于 Codeplex 上,基于 MIT 协议。目前支持 VS 2008 和.NET 3.5,但也可以重新编译以支持.NET 4.0。现在 PyBinding 还不支持 Silverlight。

查看英文原文:PyBinding: Python Scripting for XAML

.NET语言 & 开发