我正在试验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发布于 2009-08-24 00:18:18
看起来这是由Tomas 有点最近实现的:
因此,您可能需要从github的最新源代码编译。
看起来,您需要添加一个处理程序传入和存储的位置。即,为所讨论的特定事件处理程序添加一些add_和remove_例程。像这样的东西可能会根据你的需求(天真,所以请测试和充实):
class MyCommand
include System::Windows::Input::ICommand
def add_CanExecuteChanged(h)
@change_handler = h
end
def remove_CanExecuteChanged
@change_handler = nil
end
def can_execute()
true
end
def execute()
#puts "I'm being commanded"
@change_handler.Invoke if @change_handler
end
endhttps://stackoverflow.com/questions/1319487
复制相似问题