J'expérimente IronRuby et WPF et j'aimerais écrire le mien commands. Ce que j'ai ci-dessous est aussi loin que je peux comprendre.Comment implémenter une interface dans IronRuby qui inclut des événements CLR
class MyCommand
include System::Windows::Input::ICommand
def can_execute()
true
end
def execute()
puts "I'm being commanded"
end
end
Mais l'interface ICommand définit l'événement CanExecuteChanged. Comment puis-je l'implémenter dans IronRuby?
Edit: Merci à la réponse
Kevin Voici ce qui fonctionne basé sur l'ensemble 27223 de changement de la DLR. La valeur transmise à can_execute et execute est nulle.
class MyCommand
include System::Windows::Input::ICommand
def add_CanExecuteChagned(h)
@change_handlers << h
end
def remove_CanExecuteChanged(h)
@change_handlers.remove(h)
end
def can_execute(arg)
@can_execute
end
def execute(arg)
puts "I'm being commanded!"
@can_execute = false
@change_handlers.each { |h| h.Invoke(self, System::EventArgs.new) }
end
def initialize
@change_handlers = []
@can_execute = true
end
end
Ce fut une grande aide. Merci! J'ai ajouté le code de la solution de travail à la définition du problème. – Ball
Super! À son tour, votre solution ci-dessus m'a aidé aussi. Assurez-vous de joindre la liste de diffusion IronRuby (si vous n'êtes pas déjà là): http://rubyforge.org/mail/?group_id=4359 –