Forum: IronRuby data binding in Silverlight 4

Posted by Christopher Bennage (bennage)
on 2010-09-27 20:26
I'm beginning to research this, but I don't want to reinvent the wheel
if there is already a solution out there.

My understanding of the problem is this:
Data binding in Silverlight does not work because the system doesn't
know how to handle dynamic objects. This is not the case in WPF because
the binding system there uses type descriptors, but type descriptors
aren't available in Silverlight.

Is this your understanding as well?
Has there been any creative solutions to this problem?
Does anyone have details on what the binding system is really doing in
Silverlight?
Posted by Charles Strahan (charles-strahan)
on 2010-09-27 22:00
(Received via mailing list)
That's my understanding. Silverlight will only reflect over properties, 
as
it does not use type descriptors - nor does it know how to determine a
dynamic object's attributes.

If you use attr_accessor, I believe that'll result in corresponding
properties being added to the generated class.

If all else fails, you could use the Silveright DataSet (
http://silverlightdataset.net/silverlightdataset/D...) project 
to
create bindable objects. Behind the scenes, it will create a class with
properties that match the column names you pass in. I used it in a 
recent
project where I needed to display a DataGrid bound to the results of an
IDataReader, where the columns weren't known until runtime. Just 
throwin' it
out there.

-Charles


On Mon, Sep 27, 2010 at 1:26 PM, Christopher Bennage
Posted by Brian Genisio (Guest)
on 2010-09-28 03:54
(Received via mailing list)
SIlverlight, unlike WPF, is incapable of binding to dynamic properties.
 Static properties, on the other hand are no problem.  One way around 
this
is to create a string indexer on your class (this[string index]) that
returns the property by name.  Then, in the XAML, you can bind using 
array
(square-bracket) syntax:  <TextBlock text="{Binding [property]" />.  I 
do
this in C# a lot, and I am pretty sure it translates the same in 
IronRuby:
http://houseofbilz.com/archives/2010/05/14/adventu...

<http://houseofbilz.com/archives/2010/05/14/adventu...
luck,
Brian

On Mon, Sep 27, 2010 at 3:58 PM, Charles Strahan <
Posted by Christopher Bennage (Guest)
on 2010-09-28 23:31
(Received via mailing list)
Here's some interesting background about what's happened with 
IronPython:
http://devhawk.net/CategoryView,category,__clrtype__.aspx
I'm still reading through it all, but note in particular the post from 
April
24, 2009:
http://devhawk.net/2009/04/20/Introducing+Clrtype+...

My guess is that concept of __clrtype__ never made it over into 
IronRuby..

Brian, regarding your string indexer idea. I assume that you mean to
implement the indexer on a C# class and then inherit from that in ruby? 
That
idea has some merit, I'll look into it.
Posted by Brian Genisio (Guest)
on 2010-09-28 23:48
(Received via mailing list)
Christopher,

My example is in C# using dynamic, but there must be a way to write an
Indexer in Ruby that can interop properly.  If all else failed, you 
could
write a C# decorator that exposes the Ruby properties dynamically 
through a
string Indexer.

Good luck!  Let us know what you figure out :)

B

On Sep 28, 2010 5:31 PM, "Christopher Bennage" <
christopher@bluespireconsulting.com> wrote:
> Here's some interesting background about what's happened with IronPython:
> http://devhawk.net/CategoryView,category,__clrtype__.aspx
> I'm still reading through it all, but note in particular the post from
April
> 24, 2009:
> http://devhawk.net/2009/04/20/Introducing+Clrtype+...
>
> My guess is that concept of __clrtype__ never made it over into IronRuby..
>
> Brian, regarding your string indexer idea. I assume that you mean to
> implement the indexer on a C# class and then inherit from that in ruby?
That
Posted by Ivan Porto carrero (casualjim)
on 2010-09-29 08:47
(Received via mailing list)
you can always check out my ironnails project that does it for wpf and 
uses
dictionaries. http://github.com/casualjim/ironnails

The databinding approach I used should work in silverlight too

On Tue, Sep 28, 2010 at 10:23 PM, Christopher Bennage <
Posted by Miguel Madero (Guest)
on 2010-10-08 05:08
(Received via mailing list)
Hi Ivan,

Could you expand a bit on your approach? For what I noticed it defines
readers, writters and implements INPC. That's ok for WPF, but I don't 
see
how that would help in Silverlight. I'm probably missing something.



Thanks
Miguel
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.