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?
on 2010-09-27 20:26
on 2010-09-27 22:00
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
on 2010-09-28 03:54
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 <
on 2010-09-28 23:31
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.
on 2010-09-28 23:48
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
on 2010-09-29 08:47
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 <
on 2010-10-08 05:08
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
Log in with Google account | Log in with Yahoo account
No account? Register here.