[IronPython] StaticResources + DLR + Silverlight

Dan Eloff dan.eloff at gmail.com
Sun May 11 21:22:30 CEST 2008


Well it would probably work if you could iterate over the keys of a
ResourceDictionary like you can in WPF.

Maybe that will be fixed before 2.0 RTM?

-Dan

On Sun, May 11, 2008 at 9:38 AM, Dan Eloff <dan.eloff at gmail.com> wrote:
> 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
> anywhere.
>
> 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.
>
> -Dan
>
> 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