2009-09-22 56 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的經驗。出奇地容易。