【发布时间】:2009-08-23 20:35:41
【问题描述】:
我正在试验 IronRuby 和 WPF,我想编写自己的 commands。据我所知,我在下面的内容。
class MyCommand
include System::Windows::Input::ICommand
def can_execute()
true
end
def execute()
puts "I'm being commanded"
end
end
但是 ICommand 接口定义了 CanExecuteChanged 事件。如何在 IronRuby 中实现它?
编辑:感谢 Kevin 的回复
这是基于 DLR 的 27223 更改集的工作原理。传入can_execute和execute的值都是nil。
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
【问题讨论】: