用IronRuby创建WPF应用程序
2010-10-09 08:15:31 来源:WEB开发网注:和我之前说的稍有不同,时钟的运行是可预期的,然而我们仍使用Timer事件进行更新,这是在主线程之外完成任务的众多方式的一种。
接下来,你会看到为处理事件所需编写的代码仅是向CLR提供处理事件的函数名。这种方式的缺点在于它对每个事件仅允许委托一个代码块。我们需要使用add方法让该事件订阅多个处理程序,即把处理函数放到队列的末端。如下所示:
def tick
puts "tick tock"
end
timer.elapsed.add method(:tick)
timer.elapsed.add proc { puts "tick tock" }
tick_handler = lambda { puts "tick tock" }
timer.elapsed.add(tick_handler)
创建代码块作为事件处理程序的能力使得IronRuby向优秀的动态语言又迈进了一步。小写规范减少了样板代码的数量。当然,匿名方法在其它传统的.NET语言——像C#和VB——中也可用,但是在IronRuby则让人感觉更加优雅和自然。
注:无论方法是已命名还是匿名,处理事件的委托代码都可以接收参数,一般来说,参数会包括一个sender 对象和一些args。
XAML和IronRuby
XAML是微软用于定义CLR对象及其属性的类XML语言,主要在WPF和Silverlight应用程序中使用。有了它,我们可以用描述的方式来创建整个UI,在程序性代码中关联事件并在运行时绑定数据、创建图形、甚至为那些图形创建具有故事情节的动画。我不准备深入探讨XAML的架构,如果你有任何使用基于 XML语言的经验的话,你就会了解其中发生的事情。
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<Rectangle x:Name="mySquare" Width="50" Height="50">
<Rectangle.Fill>
<SolidColorBrush Color="Green" />
</Rectangle.Fill>
</Rectangle>
<TextBlock Text="Hello, world">
<TextBlock.Foreground>
<SolidColorBrush Color="Red" />
</TextBlock.Foreground>
</TextBlock>
</StackPanel>
</Window>
更多精彩
赞助商链接