<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type"
 content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
Hello all,<br>
<br>
We've been successfully using clrtype with IronPython 2.6 and
Silverlight for databinding, based on the example provided by
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
Luk&aacute;&#353;:<br>
<br>
&nbsp;&nbsp;&nbsp;
<a class="moz-txt-link-freetext"
 href="http://gui-at.blogspot.com/2009/11/inotifypropertychanged-and-databinding.html">http://gui-at.blogspot.com/2009/11/inotifypropertychanged-and-databinding.html</a><br>
<br>
We create the binding when we create the datagrid columns
programatically.<br>
<br>
Today I've been trying (and failing) to get a column in the grid show
different colors based on databinding.<br>
<br>
I've got the colored bubble *showing* in the grid, but can't get
databinding to the color to work.&nbsp; First the basics.<br>
<br>
This is the xaml for the bubble with a fixed color:<br>
<br>
&lt;DataTemplate xmlns='<a class="moz-txt-link-freetext"
 href="http://schemas.microsoft.com/client/2007">http://schemas.microsoft.com/client/2007</a>'<br>
&nbsp;xmlns:x='<a class="moz-txt-link-freetext"
 href="http://schemas.microsoft.com/winfx/2006/xaml">http://schemas.microsoft.com/winfx/2006/xaml</a>'&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;Ellipse Stroke="#FF222222" Height="15" Width="15"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Ellipse.Fill&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0"&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;GradientStop x:Name="bubbleColor" Offset="0.694"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color="#FF00FF40" /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;GradientStop Color="#FFE6E6E6"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/LinearGradientBrush&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Ellipse.Fill&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/Ellipse&gt;<br>
&lt;/DataTemplate&gt;<br>
<br>
I can add a column based on this template very simply:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from com_modules.loadxaml import loadXaml<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from System.Windows.Controls import DataGridTemplateColumn<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; column = DataGridTemplateColumn()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; column.CellTemplate = loadXaml('templatecolumn')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; column.Header = 'Bubble'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grid.Columns.Add(column)<br>
<br>
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):<br>
<br>
&nbsp;&nbsp;&nbsp; &lt;GradientStop x:Name="bubbleColor" Offset="0.694"
Color="{Binding color}" /&gt;<br>
<br>
<br>
One approach I tried was to create a ValueConverter. Here is the
skeleton of the class I created:<br>
<br>
from System import Type<br>
from System.Globalization import CultureInfo<br>
from System.Windows.Data import IValueConverter<br>
<br>
class ColorConverter(IValueConverter):<br>
&nbsp;&nbsp;&nbsp; _clrnamespace = "Converters"<br>
&nbsp;&nbsp;&nbsp; __metaclass__ = clrtype.ClrClass<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; @clrtype.accepts(object, Type, object, CultureInfo)<br>
&nbsp;&nbsp;&nbsp; @clrtype.returns(object)<br>
&nbsp;&nbsp;&nbsp; def Convert(self, value, targetType, parameter, culture):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; @clrtype.accepts(object, Type, object, CultureInfo)<br>
&nbsp;&nbsp;&nbsp; @clrtype.returns(object)<br>
&nbsp;&nbsp;&nbsp; def ConvertBack(self, value, targetType, parameter, culture):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass<br>
<br>
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.<br>
<br>
Setting this up programatically would be ideal. Anyone got any ideas?<br>
<br>
All the best,<br>
<br>
Michael<br>
<br>
<pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext"
 href="http://www.ironpythoninaction.com/">http://www.ironpythoninaction.com/</a>
<a class="moz-txt-link-freetext" href="http://www.voidspace.org.uk/blog">http://www.voidspace.org.uk/blog</a>

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 (&#8221;BOGUS AGREEMENTS&#8221;) 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.

</pre>
<br>
<pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="http://www.ironpythoninaction.com/">http://www.ironpythoninaction.com/</a>
<a class="moz-txt-link-freetext" href="http://www.voidspace.org.uk/blog">http://www.voidspace.org.uk/blog</a>

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 (&#8221;BOGUS AGREEMENTS&#8221;) 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.

</pre>
</body>
</html>