InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

PyBinding: Python Scripting for XAML

Posted by Jonathan Allen on Feb 04, 2010

Sections
Development
Topics
.NET ,
Dynamic Languages
Tags
WPF ,
XAML ,
IronPython

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.

What's wrong with code behind by clem clem Posted
Re: What's wrong with code behind by Assaf Stone Posted
  1. Back to top

    What's wrong with code behind

    by clem clem

    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.

  2. Back to top

    Re: What's wrong with code behind

    by Assaf Stone

    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).

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.