2009-09-22 61 views
2

我一直很高兴地在WPF和Silverlight应用程序中使用Model-View-ViewModel(MVVM)模式与C#结合使用。声明式XAML标记和数据绑定是非常宝贵的 - 我不能没有它们。但是,Harry Pierson关于动态语言的this talk让我对学习动态语言感到兴奋,并且我想在一个新项目中尝试一个。我一直在阅读IronPython In Action,它确实包含了一些WPF示例 - 但仅限于命令式代码。IronPython或IronRuby是否适合WPF/Silverlight中的MVVM模式?

对MVVM应用程序中的ViewModel和Model层使用IronPython或IronRuby有什么想法(与C#相比)?哪些功能让他们有吸引力(或不吸引人)?我对基本的优点/局限性感兴趣(例如AOP,鸭子打字,猴子补丁,静态类型限制等)和实际的相似(例如性能,no current IronPython Studio for v2等)。 C#4.0会提高任何限制吗?

感谢,

大卫

回答

2

我可以说,与IronRuby的写作WPF是很酷,如果你投入一点点时元编程环境,它可以是真棒。

然而,也有缺点 - 数据绑定不IronRuby的对象一起工作(必须使用为CLR对象 - look at my blog post的解决方法),但是这应该提高对.NET 4

讲究IronRuby预计将在11月份推出RTM。

说了这么多,我建议你检查一下。你可能会像我一样堕落:)

谢谢。

3

谢谢是正确的,但只为Silverlight,我没有使用Silverlight和IronRuby。您可以使用纯IronRuby和WPF绑定和使用命令。我假设这也适用于IronPython,因为它们都使用ICustomTypeDescriptor。有一个警告,你需要一个比IronRuby 0.9更新的事件DLR构建。

要创建IronRuby命令,您需要实现事件。关于更多Implementing and Interface in IronRuby that includes CLR Events

至于创建一个IronRuby对象可以参与绑定,这个处理是一个attr读写器需要被DLR用来作为一个属性。

class Bindable 
    attr :some_property, true 
end 

我已经有几个关于它的要点。 A Command ExampleA simple ViewModel Example with BindingXML Builder based xaml library在示例中使用。这些为我工作。

有限制。 XamlLoader无法从CLR中看到IronRuby类。这意味着你的视图是非常愚蠢的(零代码隐藏),或者他们来自C#的DLL。这也意味着您无法创建具有任何代码的自定义或用户控件,而无需使用C#。

尽管我没有在IronRuby/WPF中提供完整的MVVM应用程序,但我认为所有作品都已到位,而且我到了那里。

2

我已经写了关于我尝试使用WPF here的IronPython和MVVM的经验。出奇地容易。