我正在试验 IronRuby 和 WPF,我想编写自己的命令。据我所知,我在下面有什么。
class MyCommand
include System::Windows::Input::ICommand
def can_execute()
true
end
def execute()
puts "I'm being commanded"
end
end
但是 ICommand 接口定义了 CanExecuteChanged 事件。如何在 IronRuby 中实现它?
编辑:感谢凯文的回应
这是基于 DLR 的 27223 更改集的工作原理。传递给 can_execute 和 execute 的值为零。
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