【问题标题】:Xamarin Forms: Is Reactive Extensions (Rx) a framework that replaces MVVM pattern?Xamarin Forms:Reactive Extensions (Rx) 是替代 MVVM 模式的框架吗?
【发布时间】:2016-07-17 02:23:37
【问题描述】:

我有一个关于 Xamarin 表单的问题。响应式扩展只是对现有 .net 库的扩展吗?所有 mvvm 框架(FreshMvvm、MvvmCross、MvvmLight)都支持吗?还是新的 mvvm 框架?

【问题讨论】:

标签: mvvm xamarin xamarin.forms system.reactive reactiveui


【解决方案1】:

我无法回答是否所有 MVVM 框架都支持 Rx,但我可以肯定地说 Rx 不是 MVVM 的替代品,你当然不会称它为 MVVM 框架。

Rx 是一个框架,用于组合被推送的值集合(就像事件一样)。它当然可以在 MVVM 框架中使用,同样可以使用类似事件。

这是一个使用 Rx 消费事件的小例子:

void Main()
{
    var foo = new Foo();
    var bars = Observable.FromEventPattern<int>(h => foo.Bar += h, h => foo.Bar -= h);
    var subsciption = bars.Subscribe(ep => Console.WriteLine(ep.EventArgs));
    foo.OnBar(42);
}

public class Foo
{
    public event EventHandler<int> Bar;
    public void OnBar(int i)
    {
        this.Bar?.Invoke(this, i);
    }
}

这会将42 写入控制台。

但我可以这样做:

    var query =
        from b in bars
        where b.EventArgs > 21
        select b.EventArgs * 2;

    var subsciption = query.Subscribe(i => Console.WriteLine(i));

    foo.OnBar(42);
    foo.OnBar(7);
    foo.OnBar(20);
    foo.OnBar(21);
    foo.OnBar(22);

现在我有一个更复杂的查询,它只会将84 && 44 写入控制台。

这类东西可以用在 MVVM 框架中,让它们更强大。

充分利用 Rx 的 MVVM 框架的优秀示例是 http://reactiveui.net/。试一试。

【讨论】:

  • 在特定情况下使用 reactiveUI 更有意义吗?
  • @AzharAli - 比什么更有意义?比使用 Rx 更有意义?当您需要 MVVM 时。比另一个 MVVM 更有意义?当您熟悉 Rx 时,这将是一个极好的选择。你能澄清你的问题吗?
  • Here's a detailed article 将 MVVM 与 ReactiveUI 和 Xamarin 表单一起使用。
猜你喜欢
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多