[IronPython] Databinding a color in the datagrid in Silverlight
Edward J. Stembler
ejstembler at mac.com
Tue Feb 9 15:29:46 CET 2010
You're correct, you cannot bind to a color.
I do something similar in my C# Silverlight 3 project, where I had to
create a ColorToSolidBrushConverter.
On Feb 9, 2010, at 6:03 AM, Michael Foord <fuzzyman at voidspace.org.uk>
wrote:
> On 09/02/2010 03:07, Dino Viehland wrote:
>>
>> On the IValueConverter side of things: I haven’t debugged through
>> this but I have a guess as to what could be going on. When we emi
>> t a type via reflection I don’t believe it’s available via
>> Type.GetType – which is the way types usually get loaded by name.
>> If you attach a debugger I think you’d probably see an exception
>> when trying to load the type.
>>
> Thanks for the reply. Looks like an IValueConverter based solution
> is doomed to failure with IronPython and Silverlight.
>
>> The usual solution for this would be to combine pre-compiled
>> subtypes and then save the generated type to disk and re-load it.
>> You need the pre-compiled subtypes because you can’t reference a t
>> ransient assembly (which our in-memory subtypes are) from a non-tr
>> ansient one. But that’s not going to be immediately viable in Sil
>> verlight because the pre-compiled type will be a desktop CLR type.
>> So you could use pre-compiled types on the desktop and try to re
>> -write the generated assembly but it seems like that’s never worke
>> d for anyone in the past.
>>
>> I have no clue on the PARSER_BAD_PROPERTY_VALUE error.
>
> I asked this same question on Stack Overflow [1] and someone said
> that you can't bind to a Color at all until Silverlight 4. Maybe
> that is the reason for the parser error. My colleague is suggesting
> that maybe we can use the new Silverlight 3 Feature "Element to
> Element Binding" [2], so I will look into that.
>
> All the best,
>
>
> Michael
>
> [1] http://stackoverflow.com/questions/2224805/silverlight-databinding-with-ironpython-and-datagrid
> [2] http://weblogs.asp.net/dwahlin/archive/2009/07/13/using-element-to-element-binding-for-tooltips-in-silverlight-3.aspx
>>
>> From: users-bounces at lists.ironpython.com [mailto:users-
>> bounces at lists.ironpython.com] On Behalf Of Michael Foord
>> Sent: Monday, February 08, 2010 12:21 PM
>> To: Discussion of IronPython
>> Subject: [IronPython] Databinding a color in the datagrid in
>> Silverlight
>>
>> Hello all,
>>
>> We've been successfully using clrtype with IronPython 2.6 and
>> Silverlight for databinding, based on the example provided by Luk
>> áš:
>>
>> http://gui-at.blogspot.com/2009/11/inotifypropertychanged-and-databinding.html
>>
>> We create the binding when we create the datagrid columns
>> programatically.
>>
>> Today I've been trying (and failing) to get a column in the grid
>> show different colors based on databinding.
>>
>> I've got the colored bubble *showing* in the grid, but can't get
>> databinding to the color to work. First the basics.
>>
>> This is the xaml for the bubble with a fixed color:
>>
>> <DataTemplate xmlns='http://schemas.microsoft.com/client/2007'
>> xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
>> <Ellipse Stroke="#FF222222" Height="15" Width="15">
>> <Ellipse.Fill>
>> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
>> <GradientStop x:Name="bubbleColor" Offset="0.694"
>> Color="#FF00FF40" />
>> <GradientStop Color="#FFE6E6E6"/>
>> </LinearGradientBrush>
>> </Ellipse.Fill>
>> </Ellipse>
>> </DataTemplate>
>>
>> I can add a column based on this template very simply:
>>
>> from com_modules.loadxaml import loadXaml
>> from System.Windows.Controls import DataGridTemplateColumn
>> column = DataGridTemplateColumn()
>> column.CellTemplate = loadXaml('templatecolumn')
>> column.Header = 'Bubble'
>>
>> grid.Columns.Add(column)
>>
>> If I try to naively specify a binding in the xaml then I get a
>> PARSER_BAD_PROPERTY_VALUE when I attempt to load the xaml (so no
>> hope of setting up the binding after load):
>>
>> <GradientStop x:Name="bubbleColor" Offset="0.694"
>> Color="{Binding color}" />
>>
>>
>> One approach I tried was to create a ValueConverter. Here is the
>> skeleton of the class I created:
>>
>> from System import Type
>> from System.Globalization import CultureInfo
>> from System.Windows.Data import IValueConverter
>>
>> class ColorConverter(IValueConverter):
>> _clrnamespace = "Converters"
>> __metaclass__ = clrtype.ClrClass
>>
>> @clrtype.accepts(object, Type, object, CultureInfo)
>> @clrtype.returns(object)
>> def Convert(self, value, targetType, parameter, culture):
>> pass
>>
>> @clrtype.accepts(object, Type, object, CultureInfo)
>> @clrtype.returns(object)
>> def ConvertBack(self, value, targetType, parameter, culture):
>> pass
>>
>> As there is a _clrnamespace specified I thought I might then be
>> able to use this converter in xaml. Trying to reference the
>> ColorConverter class in the Converters namespace in a resources
>> dictionary again causes blow ups when loading the xaml.
>>
>> Setting this up programatically would be ideal. Anyone got any ideas?
>>
>> All the best,
>>
>> Michael
>>
>>
>> --
>> http://www.ironpythoninaction.com/
>> http://www.voidspace.org.uk/blog
>>
>> READ CAREFULLY. By accepting and reading this email you agree, on
>> behalf of your employer, to release me from all obligations and
>> waivers arising from any and all NON-NEGOTIATED agreements,
>> licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap,
>> confidentiality, non-disclosure, non-compete and acceptable use
>> policies (”BOGUS AGREEMENTS”) that I have entered into with your
>> employer, its partners, licensors, agents and assigns, in perpetui
>> ty, without prejudice to my ongoing rights and privileges. You fur
>> ther represent that you have the authority to release me from any
>> BOGUS AGREEMENTS on behalf of your employer.
>>
>>
>>
>> --
>> http://www.ironpythoninaction.com/
>> http://www.voidspace.org.uk/blog
>>
>> READ CAREFULLY. By accepting and reading this email you agree, on
>> behalf of your employer, to release me from all obligations and
>> waivers arising from any and all NON-NEGOTIATED agreements,
>> licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap,
>> confidentiality, non-disclosure, non-compete and acceptable use
>> policies (”BOGUS AGREEMENTS”) that I have entered into with your
>> employer, its partners, licensors, agents and assigns, in perpetui
>> ty, without prejudice to my ongoing rights and privileges. You fur
>> ther represent that you have the authority to release me from any
>> BOGUS AGREEMENTS on behalf of your employer.
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>
>
> --
> http://www.ironpythoninaction.com/
> http://www.voidspace.org.uk/blog
>
> READ CAREFULLY. By accepting and reading this email you agree, on
> behalf of your employer, to release me from all obligations and
> waivers arising from any and all NON-NEGOTIATED agreements,
> licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap,
> confidentiality, non-disclosure, non-compete and acceptable use
> policies (”BOGUS AGREEMENTS”) that I have entered into with your
> employer, its partners, licensors, agents and assigns, in perpetuity
> , without prejudice to my ongoing rights and privileges. You further
> represent that you have the authority to release me from any BOGUS
> AGREEMENTS on behalf of your employer.
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20100209/4b5f9247/attachment.html>
More information about the Ironpython-users
mailing list