Forum: IronRuby data binding in Silverlight 4

09da1a93325f38a748376b3bf77bdb25?d=identicon&s=25 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?
D2a71671c69e5bbc715d7979d69214ec?d=identicon&s=25 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
170325813beddd7418a3b55ffbf378f9?d=identicon&s=25 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 <
22743df4d03210598447e912bd5dcbd4?d=identicon&s=25 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.
170325813beddd7418a3b55ffbf378f9?d=identicon&s=25 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
1e39a948a58f4569c53d971c2e120920?d=identicon&s=25 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 <
Eee0e8263681860505633a039af4a10e?d=identicon&s=25 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
This topic is locked and can not be replied to.