如何在 IronRuby 中实现包含 CLR 事件的接口
我正在尝试使用 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 中实现它?
编辑:感谢 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来这是由 Tomas 最近实现的:
所以你可能需要从 github 的最新源进行编译
看起来您需要添加一个地方用于传入并存储处理程序。即,通过为相关的特定事件处理程序添加一些 add_ 和 remove_ 例程。
像这样的东西可能会根据您的需求起作用(天真,所以请测试并充实):
It looks like this was implemented by Tomas somewhat recently:
So you may need to compile from the latest source at github
It looks like you need to add a place for the handler to be passed in and stored. Namely, by adding some add_ and remove_ routines for the specific event handler in question.
Something like this might work based on your needs (naive, so please test and flesh out):