FYI, Tomas's latest patch (http://www.ruby-forum.com/topic/179668) expands IronRuby's .NET event support to:
def handler a,b puts ""handler: #{a} #{b}"" end c = C.new # using a block: h = c.on_foo { |a,b| ... } c.on_foo.remove(h) # using a method object: h = method(:handler) c.on_foo.add(h) c.on_foo.remove(h) ~js From: ironruby-core-boun...@rubyforge.org [mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Jimmy Schementi Sent: Monday, February 09, 2009 6:28 PM To: ironruby-core@rubyforge.org Subject: Re: [Ironruby-core] WPF: registering a routed event We only have blocks/lambda->event handlers working. Passing a method handle is on the list, but not done yet. Feel free to post a bug on RubyForge to make sure we get around to it. http://rubyforge.org/tracker/?func=add&group_id=4359&atid=16798 ~js From: ironruby-core-boun...@rubyforge.org [mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Meinrad Recheis Sent: Sunday, February 08, 2009 3:46 PM To: ironruby-core Subject: [Ironruby-core] WPF: registering a routed event Hi all, I seem to step in every hole there is on my IronRuby test drive. Using the latest git head I am failing to register a button click event in WPF: >>> require "WindowsBase, Version=3.0.0.0, Culture=neutral, >>> PublicKeyToken=31bf3856ad364e35" => true >>> require "PresentationCore, Version=3.0.0.0, Culture=neutral, >>> PublicKeyToken=31bf3856ad364e35" => true >>> require 'PresentationFramework, Version=3.0.0.0, Culture=neutral, >>> PublicKeyToken=31bf3856ad364e35' => true >>> b = System::Windows::Controls::Button.new => #<System::Windows::Controls::Button:0x0000064> >>> def on_click o, args ... puts "clicked!!" ... end => nil >>> b.add_Click( method(:on_click)) :0: can't convert Method into System::Windows::RoutedEventHandler (TypeError) >>> h=System::Windows::RoutedEventHandler.new{|o, args| puts "clicked!!" } => #<System::Windows::RoutedEventHandler:0x000006a> >>> h.Invoke(nil, nil) clicked!! => nil >>> b.add_Click(h) :0: can't convert Method into System::Windows::RoutedEventHandler (TypeError) Actually I would have expected b.add_Click( method(:on_click)) or b.add_Click( lambda {|o, args| ... } ) to work, just like it does in IronPython: >>> clr.AddReference( 'WindowsBase') >>> clr.AddReference( 'PresentationCore') >>> clr.AddReference( 'PresentationFramework') >>> import System >>> from System import Windows >>> from System.Windows import Controls >>> from System.Windows.Controls import * >>> b= Button() >>> def on_click(o, args): ... print "clicked!!" ... >>> b.add_Click(on_click) >>> I hope, I am not starting to annoy you guys ;) -- henon
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core