private IObservable<SelectionViewModel> GetSelection(UIElement relativeTo) { IObservable<SelectionViewModel> mouseMoveObservable = from mouseDown in relativeTo.GetMouseDown() let mouseDownPosition = mouseDown.EventArgs.GetPosition(relativeTo) from mouseMove in relativeTo.GetMouseMove().TakeUntil(relativeTo.GetMouseUp()) let mouseMovePosition = mouseMove.EventArgs.GetPosition(relativeTo) select new SelectionViewModel(mouseDownPosition, mouseMovePosition); return mouseMoveObservable; }