Реактивные расширения (Rx) + MVVM =?

Одним из основных примеров, используемых для объяснения силы Reactive Extensions (Rx), является объединение существующих событий мыши в новое 'событие' отображение дельт при перетаскивании мышью:

var mouseMoves = from mm in mainCanvas.GetMouseMove()
                 let location = mm.EventArgs.GetPosition(mainCanvas)
                 select new { location.X, location.Y};

var mouseDiffs = mouseMoves
    .Skip(1)
    .Zip(mouseMoves, (l, r) => new {X1 = l.X, Y1 = l.Y, X2 = r.X, Y2 = r.Y});

var mouseDrag = from _  in mainCanvas.GetMouseLeftButtonDown()
                from md in mouseDiffs.Until(
                    mainCanvas.GetMouseLeftButtonUp())
                select md;

Источник:Мэтью Podwysocki 's Введение в серию Reactive Framework.

В MVVM я обычно стараюсь сохранить мой файл .xaml.cs настолько пустым, насколько это возможно, и один из способов подключения событий из представления с помощью команд в viewmodel исключительно в разметке - использовать поведение:


    
        
            
            
            
        
    

Источник:Брайан Дженисио.

Кажется, что Reactive Framework более приспособлен к традиционному шаблону MVC, где контроллер знает представление и может напрямую ссылаться на его события.

Но я хочу съесть свой пирог и съесть его!

Как бы вы совместили эти две модели?

Ответы на вопрос(5)

Ваш ответ на вопрос