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?
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/Default.aspx) 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
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: . I
do
this in C# a lot, and I am pretty sure it translates the same in
IronRuby:
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.
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.
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 forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.