Xamarin Forms:Reactive Extensions (Rx) 是替代 MVVM 模式的框架吗?

Xamarin Forms: Is Reactive Extensions (Rx) a framework that replaces MVVM pattern?

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

我无法回答是否所有的 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/。试试吧。