wpf - IronPython 或 IronRuby 是否非常适合 WPF/Silverlight 中的 MVVM 模式?

标签 wpf silverlight mvvm ironpython ironruby

我非常高兴在 WPF 和 Silverlight 应用程序中结合 C# 使用模型- View - View 模型 (MVVM) 模式。声明性 XAML 标记和数据绑定(bind)非常宝贵——没有它们我就活不下去。但是,this talk Harry Pierson 写的关于动态语言的文章让我对学习动态语言感到兴奋,我想在新项目中尝试一下。我一直很喜欢阅读IronPython In Action ,并且它确实包含一些 WPF 示例 - 但仅限于命令式代码。

您对在 MVVM 应用程序的 ViewModel 和模型层使用 IronPython 或 IronRuby 有什么想法(与 C# 相比)?哪些特征使它们有吸引力(或没有吸引力)?我对基本优点/限制(例如 AOP、鸭子类型、猴子修补、静态类型限制等)和实用优点/限制(例如性能、 no current IronPython Studio for v2 等)感兴趣。 C# 4.0 是否会改善任何限制?

谢谢

大卫

最佳答案

Shay 是对的,但仅限于 Silverlight,我没有使用过 Silverlight 和 IronRuby。您可以通过纯 IronRuby 和 WPF 绑定(bind)和使用命令。我假设这也适用于 IronPython,因为它们都使用 ICustomTypeDescriptor 。有一个警告,您需要一个比 IronRuby 0.9 更新的 DLR 版本来处理事件。

要创建 IronRuby 命令,您需要实现事件。有关更多信息,请参阅此问题 Implementing and Interface in IronRuby that includes CLR Events

对于创建可以参与绑定(bind)的 IronRuby 对象,需要使用 attr 读取器/写入器,以便 DLR 将其视为属性。

class Bindable
  attr :some_property, true
end

我有一些关于它的要点。 A Command Example , A simple ViewModel Example with Binding还有XML Builder based xaml library在示例中使用。这些对我有用。

有限制。 XamlLoader 无法从 CLR 中看到 IronRuby 类。这意味着您的 View 真的很愚蠢(零代码隐藏),或者它们来自 C# dll。这还意味着,如果不使用 C#,就无法创建包含任何代码的自定义控件或用户控件。

虽然我在 IronRuby/WPF 中没有完全成熟的 MVVM 应用程序,但我认为所有部分都已就位,我正在实现目标。

关于wpf - IronPython 或 IronRuby 是否非常适合 WPF/Silverlight 中的 MVVM 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458332/

相关文章:

wpf - 避免 3D 圆柱模型中的接缝

silverlight - 使用 Moq 在 Silverlight WCF 代理中模拟异步调用

asp.net - 使用 MVVM 模式的 Asp .NET Web API

c# - 使用 MVVM 模式 C# 进行实时编辑

WPF:绑定(bind)更改时如何触发EventTrigger(或动画)?

c# - Keyboard.Focus 不适用于 WPF 中的文本框

silverlight - 输入一天中的时间或持续时间的最直观、最有用的方法是什么?

c# - View 未显示在 MVVM 中

.net - 在Wpf应用中查看Byte [] Pdf

silverlight - 虚拟化 ListBox 的 ItemsControl 的边距无法正常工作