[IronPython] StaticResources + DLR + Silverlight

Dan Eloff dan.eloff at gmail.com
Sun May 11 16:38:05 CEST 2008

Ok, I think I have discovered an answer to this one. I haven't tested
it because I no longer use xaml files for anything but resources, but
it *should* work. Make a xaml file for just application level
resources, it should simply consist of a <ResourceDictionary>. Use
XamlReader.Load() to read it, now you have a dictionary of your global
styles and things. Programmatically merge that dictionary into the
Application.Current.Resources dictionary. If that works, you should be
able to use {StaticResource } to refer to your resources from

But bottom line is XAML cannot use Python objects and controls, so for
anything but the very simple, it soon becomes a liability. I've made a
module that simplifies the process of creating controls in Python
(which I hope to place in the IronPython cookbook soon.)

Here's an example:

x.Canvas(Width=400, Height=400)(
    x.Rectangle(Width=200, Height=200, Canvas_Top=100, Canvas_Left=100,

Fill=x.VerticalGradient([(x.Colors.DarkTurquoise, 0),
(x.Color('#4169e1'), 1)])

It's about half the size of the equivalent xaml, but no static error
checking, and very little in the way of auto completion and
intellisense, so I consider it about a wash. The advantage is that you
can now use Python controls and objects, and you can use anything
python has to offer, like loops, closures, or conditionals, when
constructing your interface.


On Tue, May 6, 2008 at 2:04 AM, Jimmy Schementi
<Jimmy.Schementi at microsoft.com> wrote:
> Dan,
> It's a very good question, and I'm a little embarrassed not to have a solution for you. Give me some time to poke around and find the best way to do this.
> ~js
>> -----Original Message-----
>> From: users-bounces at lists.ironpython.com [mailto:users-
>> bounces at lists.ironpython.com] On Behalf Of Dan Eloff
>> Sent: Monday, May 05, 2008 6:44 AM
>> To: Discussion of IronPython
>> Subject: [IronPython] StaticResources + DLR + Silverlight
>> I notice if you use C#/VB, you have <Application> in your main xaml
>> file. In there you can place resources that can be used from anywhere
>> in your other xaml files. Using the {StaticResource foo}  markup
>> extension.
>> If you are using a dynamic language, there is no <DynamicApplication>
>> equivalent (please correct me if I'm wrong), most examples I've seen
>> use <UserControl>.
>> The trouble is placing your resources in <UserControl.Resources> makes
>> them off limit to {StaticResource foo} in any other xaml files (again
>> please correct me if I'm wrong)
>> So I find myself in a nightmare of duplicating resources across files
>> and setting styles in code from
>> Application.Current.RootVisual.Resources['foo'], neither of which is
>> pleasant. Are there really no better alternatives?
>> -Dan
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

More information about the Ironpython-users mailing list