Hi

Will plain ruby objects be able to participate in the WPF databinding
scenario or I may be doing it wrong ? I'm asking because I tried the
following and the C# class works but the ruby class doesn't. If I replace
Person.new with CSPerson.new it works.
I can bind to arrays with simple types and I've tried binding to Name or
name.

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation";
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";
    Title="Testing 123"  Height="500" Width="826"  >

    <Grid>
  <TextBlock Text="Testing 123" />
  <ListBox x:Name="list">
    <ListBox.ItemTemplate>
      <DataTemplate>
        <TextBlock Text="{Binding Path=Name, FallbackValue=Name should be
here}" />
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
  </Grid>
</Window>

public class CSPerson
{
    public CSPerson(int id, string name, int age){
        Id=id;
        Name=name;
        Age=age;
    }

    public int Id{get; set;}
    public string Name{get; set;}
    public int Age{get; set;}
}

# get the necessary assemblies loaded for .NET
require 'mscorlib'
require 'System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089'
require 'System.Xml, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089'
require 'PresentationFramework, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'
require 'PresentationCore, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'
require File.expand_path('./csperson.dll' )

# include some namespaces for easy access
include System
include System::Windows
include System::Windows::Markup
include System::Xml

class Person
    attr_accessor :name, :age, :id

    def initialize(id, name, age)
        @id, @name, @age = id, name, age
    end
end

#run the application
xaml_path = "default.xaml"
obj = XamlReader.load XmlReader.create(xaml_path)

people = []
people << Person.new(1, "ivan", 30)
people << Person.new(2, "jeff", 25)
people << Person.new(3, "mark", 38)
people << Person.new(4, "vicky", 33)

obj.find_name('list').items_source = people
Application.new.run obj

Thanks
Ivan
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to