BT

InfoQ Homepage News PyBinding: Python Scripting for XAML

PyBinding: Python Scripting for XAML

Bookmarks

WPF developers often find themselves with an unappetizing choice. They have to either pollute their code-behind files with special case logic or create value converter classes, most of which will only be used once. PyBinding offers a third option, embedding small scripts right inside the XAML.

For example, let us say you want a block of text to be visible only if a data-bound property is non-zero. With PyBinding, you can set do this by binding the Visibility property to a fragment of IronPython code.

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

BooleanToVisibilty is a straight IronPython function that is defined in your application’s StartupScript.py file. The fragment “($[.OpenIssues]” refers to the OpenIssues property of the current data context. If you omit the leading dot, it would instead bind to a control with the name OpenIssues.

In testing, we have found PyBinding to have a brief performance impact while the DLR and IronPython are loaded. Once in memory, an informal review showed no significant difference between using PyBinding and fully compiled value converters.

PyBinding is available on Codeplex under the MIT license. It currently works with VS 2008 and .NET 3.5, but you can recompile it to target .NET 4.0. It does not currently support Silverlight.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • What's wrong with code behind

    by clem clem /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    That's a good tip but why do so many developers in the MVVM world try to have zero code in the code behind ?
    At least it's the code behind is strongly typed.

  • Re: What's wrong with code behind

    by Assaf Stone /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Code behind couples how the client looks with how it behaves. This causes brittleness that force you to rewrite your behavioral code when you wish to either reskin your application, or out-source your GUI+user-experience to a UX expert (3rd party firm, or even the designer in the next cubical).

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
Country/Zone:
State/Province/Region:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.